记录sqlserver查看表中字段信息
SELECT
C.NAME AS [列名],
T.NAME AS [类型],
CASE
WHEN ( isnull( COLUMNPROPERTY ( C.id, C.NAME, 'Scale' ), 0 ) >= 1 ) THEN
T.NAME + '(' + CONVERT(nvarchar,COLUMNPROPERTY ( C.id, C.NAME, 'PRECISION' )) + ',' + CONVERT(nvarchar,COLUMNPROPERTY ( C.id, C.NAME, 'Scale' )) + ')'
WHEN ( isnull( COLUMNPROPERTY ( C.id, C.NAME, 'Scale' ), 0 ) <= 0 ) THEN
T.NAME + '(' + CONVERT(nvarchar,COLUMNPROPERTY ( C.id, C.NAME, 'PRECISION' )) + ')'
END AS columnType,
isnull( ETP.VALUE, '' ) AS [注释],
CONVERT ( bit, C.IsNullable ) AS [是否可为空],
CONVERT (
bit,
CASE
WHEN EXISTS (
SELECT
1
FROM
sysobjects
WHERE
xtype = 'PK'
AND parent_obj = C.id
AND NAME IN ( SELECT NAME FROM sysindexes WHERE indid IN ( SELECT indid FROM sysindexkeys WHERE id = C.id AND colid = C.colid ) )
) THEN
1 ELSE 0
END
) AS [是否主键]
,convert(bit,COLUMNPROPERTY(c.id,c.name,'IsIdentity')) AS [自动增长]
,C.Length as [占用字节]
,COLUMNPROPERTY(C.id,C.name,'PRECISION') as [长度]
,isnull(COLUMNPROPERTY(C.id,C.name,'Scale'),0) as [小数位数]
,ISNULL(CM.text,'') as [默认值]
,ROW_NUMBER() OVER (ORDER BY C.name) AS [Row]
FROM syscolumns C
INNER JOIN systypes T ON C.xusertype = T.xusertype
left JOIN sys.extended_properties ETP ON ETP.major_id = c.id AND ETP.minor_id = C.colid AND ETP.name ='MS_Description'
left join syscomments CM on C.cdefault=CM.id
WHERE C.id = object_id('test_field')