COLUMNS (Transact-SQL)
針對目前資料庫中目前使用者所能存取的每個資料行,各傳回一個資料列。
若要從這些檢視中擷取資訊,請指定 INFORMATION_SCHEMA.view_name 的完整名稱。
資料行名稱 |
資料類型 |
描述 |
---|---|---|
TABLE_CATALOG |
nvarchar(128) |
資料表限定詞。 |
TABLE_SCHEMA |
nvarchar(128) |
包含資料表的結構描述名稱。 ![]()
請勿使用 INFORMATION_SCHEMA 檢視來判斷物件的結構描述。要尋找物件的結構描述,唯一可靠的方式就是查詢 sys.objects 目錄檢視或使用 OBJECT_SCHEMA_NAME 函數。
|
TABLE_NAME |
nvarchar(128) |
資料表名稱。 |
COLUMN_NAME |
nvarchar(128) |
資料行名稱。 |
ORDINAL_POSITION |
int |
資料行識別碼。 |
COLUMN_DEFAULT |
nvarchar(4000) |
資料行的預設值。 SQL Server 2008 在目錄中繼資料內解碼及儲存 SQL 運算式的方式異於 SQL Server 2000。已解碼運算式的語意相當於原始文字,但是不能保證語法相同。例如,空白字元會從已解碼的運算式移除。如需詳細資訊,請參閱<SQL Server 2008 中對於 Database Engine 功能的行為變更>。 |
IS_NULLABLE |
varchar(3) |
資料行的 Null 屬性。如果這個資料行允許 NULL,這個資料行就會傳回 YES。否則,會傳回 NO。 |
DATA_TYPE |
nvarchar(128) |
系統提供的資料類型。 |
CHARACTER_MAXIMUM_LENGTH |
int |
二進位資料、字元資料,或文字和影像資料的最大長度 (以字元為單位)。 如果是 xml 及大數值類型資料,便傳回 -1。否則,就傳回 NULL。如需詳細資訊,請參閱<資料類型 (Transact-SQL)>。 |
CHARACTER_OCTET_LENGTH |
int |
二進位資料、字元資料,或文字和影像資料的最大長度 (以位元組為單位)。 如果是 xml 及大數值類型資料,便傳回 -1。否則,就傳回 NULL。 |
NUMERIC_PRECISION |
tinyint |
近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數。否則,就傳回 NULL。 |
NUMERIC_PRECISION_RADIX |
smallint |
近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數基數。否則,就傳回 NULL。 |
NUMERIC_SCALE |
int |
近似數值資料、精確數值資料、整數資料或貨幣資料的小數位數。否則,就傳回 NULL。 |
DATETIME_PRECISION |
smallint |
datetime 和 ISO interval 資料類型的子類型代碼。如果是其他資料類型,就傳回 NULL。 |
CHARACTER_SET_CATALOG |
nvarchar(128) |
傳回 master。如果資料行是字元資料或 text 資料類型,便指出字元集所在的資料庫。否則,就傳回 NULL。 |
CHARACTER_SET_SCHEMA |
nvarchar(128) |
一律傳回 NULL。 |
CHARACTER_SET_NAME |
nvarchar(128) |
如果這個資料行是字元資料或 text 資料類型,則傳回字元集的唯一名稱。否則,就傳回 NULL。 |
COLLATION_CATALOG |
nvarchar(128) |
一律傳回 NULL。 |
COLLATION_SCHEMA |
nvarchar(128) |
一律傳回 NULL。 |
COLLATION_NAME |
nvarchar(128) |
如果資料行是字元資料或 text 資料類型,則傳回定序的唯一名稱。否則,就傳回 NULL。 |
DOMAIN_CATALOG |
nvarchar(128) |
如果資料行是別名資料類型,這個資料行就是建立使用者自訂資料類型的資料庫名稱。否則,就傳回 NULL。 |
DOMAIN_SCHEMA |
nvarchar(128) |
如果資料行是一個使用者定義資料類型,這個資料行會傳回使用者定義資料類型的結構描述名稱。否則,就傳回 NULL。 ![]()
請勿使用 INFORMATION_SCHEMA 檢視來判斷資料類型的結構描述。尋找類型之結構描述的唯一可靠方式就是使用 TYPEPROPERTY 函數。
|
DOMAIN_NAME |
nvarchar(128) |
如果資料行是一個使用者自訂資料類型,這個資料行就是使用者自訂資料類型的名稱。否則,就傳回 NULL。 |
備註
INFORMATION_SCHEMA.COLUMNS 檢視的 ORDINAL_POSITION 資料行與 COLUMNS_UPDATED 函數所傳回之資料行的位元模式不相容。若要取得相容於 COLUMNS_UPDATED 的位元模式,在您查詢 INFORMATION_SCHEMA.COLUMNS 檢視時,您必須參考 COLUMNPROPERTY 系統函數的 ColumnID 屬性。例如:
USE AdventureWorks;
GO
SELECT COLUMN_NAME, COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'ColumnID') AS COLUMN_ID
FROM AdventureWorks.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Employee';
範例
下列範例會傳回資料庫中所有資料表和檢視不能有 NULL 值的資料行。
USE AdventureWorks;
GO
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE IS_NULLABLE = 'NO'
ORDER BY DATA_TYPE;