COLUMNPROPERTY (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
此函式會傳回資料行或參數資訊。
語法
COLUMNPROPERTY ( id , column , property )
引數
id
包含資料表或程序之識別碼 (ID) 的運算式。
column
包含資料行或參數名稱的運算式。
property
針對 id 引數,property 引數會指定 COLUMNPROPERTY
函式所傳回的資訊類型。 property 引數可以具有下列任何一個值:
值 | 描述 | 傳回的值 |
---|---|---|
AllowsNull | 允許 Null 值 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
ColumnId | 對應於 sys.columns.column_id 的資料行識別碼值。 | 資料行識別碼 注意:當查詢多個資料行時,資料行識別碼值順序可能會有間距。 |
FullTextTypeColumn | 資料表中保存 column 之文件類型資訊的 TYPE COLUMN。 | 此函式的第二個參數所傳遞之資料行名稱運算式的全文檢索 TYPE COLUMN 識別碼。 |
GeneratedAlwaysType | 是系統產生的資料行值。 對應到 sys.columns.generated_always_type | 適用於:SQL Server 2016 (13.x) 和更新版本。 0:不一律會產生 1:一律作為資料列開頭產生 2:一律作為資料列結尾產生 |
IsColumnSet | 資料行是資料行集。 如需詳細資訊,請參閱 使用資料行集。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsComputed | 資料行是一個計算資料行。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsCursorType | 程序參數的類型是 CURSOR。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsDeterministic | 資料行具有決定性。 這個屬性只適用於計算資料行和檢視資料行。 | 1:TRUE 0:FALSE NULL:無效的輸入。 不是計算資料行或檢視資料行。 |
IsFulltextIndexed | 資料行已完成全文檢索索引的登錄。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsHidden | 是系統產生的資料行值。 對應至 sys.columns.is_hidden | 適用於:SQL Server 2016 (13.x) 和更新版本。 0:不隱藏 1:隱藏 |
IsIdentity | 資料行使用 IDENTITY 屬性。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsIdNotForRepl | 資料行會檢查 IDENTITY_INSERT 設定。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsIndexable | 資料行可以建立索引。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsOutParam | 程序參數是一個輸出參數。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsPrecise | 資料行是精確的。 這個屬性只適用於具決定性的資料行。 | 1:TRUE 0:FALSE NULL:無效的輸入。 不是具決定性的資料行 |
IsRowGuidCol | 資料行具有 uniqueidentifier 資料類型,並且使用 ROWGUIDCOL 屬性所定義。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsSparse | 資料行是疏鬆資料行。 如需詳細資訊,請參閱 使用疏鬆資料行。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsSystemVerified | 資料庫引擎可以驗證資料行的決定性和精確度屬性。 這個屬性只適用於計算資料行和檢視資料行。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
IsXmlIndexable | XML 資料行可用於 XML 索引中。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
有效位數 | 資料行或參數的資料類型長度。 | 指定的資料行資料類型長度 -1:xml 或大數值類型 NULL:無效的輸入。 |
縮放比例 | 資料行或參數資料類型的小數位數。 | 小數位數值 NULL:無效的輸入。 |
StatisticalSemantics | 資料行啟用語意索引。 | 1:TRUE 0:FALSE |
SystemDataAccess | 資料行是從存取 SQL Server 的系統目錄或虛擬系統資料表中所含資料的函式衍生而來的。 這個屬性只適用於計算資料行和檢視資料行。 | 1:TRUE (表示唯讀存取。) 0:FALSE NULL:無效的輸入。 |
UserDataAccess | 資料行是從存取 SQL Server 本機執行個體中儲存的使用者資料表 (包括檢視和暫存資料表) 資料的函式衍生而來的。 這個屬性只適用於計算資料行和檢視資料行。 | 1:TRUE (表示唯讀存取。) 0:FALSE NULL:無效的輸入。 |
UsesAnsiTrim | ANSI_PADDING 已在資料表建立時設定為 ON。 這個屬性只適用對象 char 或 varchar 類型的資料行或參數。 | 1:TRUE 0:FALSE NULL:無效的輸入。 |
傳回類型
int
例外狀況
發生錯誤或呼叫端沒有檢視物件的權限時,會傳回 NULL。
使用者只能檢視使用者擁有或被授與某些權限之安全性實體的中繼資料。 這表示,如果使用者沒有物件的正確權限,則發出中繼資料的內建函式 (例如 COLUMNPROPERTY
) 可能會傳回 NULL。 如需詳細資訊,請參閱中繼資料可見性設定。
備註
檢查資料行的決定性屬性時,請先測試資料行是否為計算資料行。 如果是非計算資料行,IsDeterministic 引數會傳回 NULL。 您可以將計算資料行指定成索引資料行。
範例
此範例會傳回 LastName
資料行的長度。
USE AdventureWorks2022;
GO
SELECT COLUMNPROPERTY( OBJECT_ID('Person.Person'),'LastName','PRECISION')AS 'Column Length';
GO
結果集如下所示。
Column Length
-------------
50