COLUMNPROPERTY (Transact-SQL)

傳回資料行或參數的相關資訊。

主題連結圖示Transact-SQL 語法慣例

語法

COLUMNPROPERTY ( id , column , property ) 

引數

  • id
    這是包含資料表或處理序識別碼的運算式

  • column
    這是包含資料行或參數名稱的運算式。

  • property
    這是包含將傳回之 id 資訊的運算式,它可以是下列值之一。

    說明

    傳回的值

    AllowsNull

    允許 Null 值

    1 = TRUE

    0 = FALSE

    NULL = 輸入無效。

    ColumnId

    對應於 sys.columns.column_id 的資料行識別碼值。

    資料行識別碼

    附註附註
    當查詢多個資料行時,資料行識別碼值順序可能會有間距。

    FullTextTypeColumn

    在資料表中,用來保留 column 文件類型資訊的 TYPE COLUMN。

    這個屬性的第二個參數所傳遞的資料行全文檢索 TYPE COLUMN 識別碼。

    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 = 輸入無效。

    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 = 輸入無效。

    IsSystemVerified

    您可以利用 Database Engine 來驗證資料行的決定性和有效位數屬性。這個屬性只適用於計算資料行和檢視資料行。

    1 = TRUE

    0 = FALSE

    NULL = 輸入無效。

    IsXmlIndexable

    XML 資料行可用於 XML 索引中。

    1 = TRUE

    0 = FALSE

    NULL = 輸入無效。

    Precision

    資料行或參數的資料類型長度。

    指定的資料行資料類型長度

    -1 = xml 或大數值類型

    NULL = 輸入無效。

    Scale

    資料行或參數的資料類型小數位數。

    小數位數

    NULL = 輸入無效。

    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 = 輸入無效。

    IsSparse

    資料行是疏鬆資料行。如需詳細資訊,請參閱<使用疏鬆資料行>。

    1= TRUE

    0= FALSE

    NULL = 輸入無效。

    IsColumnSet

    資料行是資料行集。如需詳細資訊,請參閱<使用資料行集>。

    1= TRUE

    0= FALSE

    NULL = 輸入無效。

傳回類型

int

例外狀況

當發生錯誤,或呼叫者沒有檢視物件的權限時,便會傳回 NULL。

在 SQL Server 2008 中,使用者只能檢視使用者擁有或被授與某些權限之安全性實體的中繼資料。這表示發出中繼資料的內建函數 (例如,COLUMNPROPERTY) 會在使用者不具有該物件任何權限時傳回 NULL。如需詳細資訊,請參閱<中繼資料可見性組態>和<中繼資料可見性疑難排解>。

備註

當您檢查資料行的決定性屬性時,請先測試資料行是否為計算資料行。如果是非計算資料行,IsDeterministic 會傳回 NULL。您可以將計算資料行指定成索引資料行。

範例

下列範例會傳回 LastName 資料行的長度。

USE AdventureWorks2008R2;
GO
SELECT COLUMNPROPERTY( OBJECT_ID('Person.Person'),'LastName','PRECISION')AS 'Column Length';
GO

以下為結果集:

Column Length 
------------- 
50

(1 row(s) affected)