2014-01-31 103 views
2

我需要列名與其他信息一起像如何從SqlServer表中獲取列名稱和其他信息?

DATA_TYPE, CHARACTER_MAXIMUM_LENGTH ,NUMERIC_PRECISION, NUMERIC_SCALE, IS_NULLABLE, IS_IDENTITY,ORDINAL_POSITION , Primary Key from table 

我使用下面的查詢爲

Select C.COLUMN_NAME as 'ColumnName', 
     C.DATA_TYPE as 'Datatype', 
     C.CHARACTER_MAXIMUM_LENGTH as 'MaxLength', 
     C.NUMERIC_PRECISION as 'Precision', 
     C.NUMERIC_SCALE as 'Scale', 
     C.IS_NULLABLE as 'Is_NULL', 
     C.IS_IDENTITY, 
     C.ORDINAL_POSITION as 'Position', 
     isnull(Z.CONSTRAINT_NAME,0) as 'PrimaryKey' 
From INFORMATION_SCHEMA.COLUMNS As C 
Outer Apply (
    Select CCU.CONSTRAINT_NAME 
    From INFORMATION_SCHEMA.TABLE_CONSTRAINTS As TC 
    Join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE As CCU 
     On CCU.CONSTRAINT_NAME = TC.CONSTRAINT_NAME 
    Where TC.TABLE_SCHEMA = C.TABLE_SCHEMA And 
      TC.TABLE_NAME = C.TABLE_NAME And 
      TC.CONSTRAINT_TYPE = 'PRIMARY KEY' And 
      CCU.COLUMN_NAME = C.COLUMN_NAME) As Z 
Where C.TABLE_NAME = 'tablename' 

的問題是與C.IS_IDENTITY如果我刪除它,然後查詢工作正常

請建議我我如何獲得身份信息與該查詢

回答

2

對於IS_IDENTITY在您的選擇查詢中使用以下表達式

COLUMNPROPERTY(object_id('tablename'), C.COLUMN_NAME, 'IsIdentity') 
+0

@ user3256340標記此答案,如果它有幫助 –

相關問題