分享一个sqlserver 查询表的列名称、说明、备注、类型等内容的语句:
SELECT 表名 = CASE
WHEN a.colorder = 1 THEN
d.name
ELSE
''
END,
表说明 = CASE
WHEN a.colorder = 1 THEN
ISNULL(f.value, '')
ELSE
''
END,
字段序号 = a.colorder,
字段名 = a.name,
标识 = CASE
WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN
'√'
ELSE
''
END,
主键 = CASE
WHEN EXISTS
(
SELECT 1
FROM sysobjects
WHERE xtype = 'PK'
AND parent_obj = a.id
AND name IN
(
SELECT name
FROM sysindexes
WHERE indid IN
(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid = a.colid
)
)
) THEN
'√'
ELSE
''
END,
类型 = b.name,
长度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION'),
小数位数 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0),
允许空 = CASE
WHEN a.isnullable = 1 THEN
'√'
ELSE
''
END,
默认值 = ISNULL(e.text, ''),
字段说明 = ISNULL(g.[value], '')
FROM syscolumns a
LEFT JOIN systypes b
ON a.xusertype = b.xusertype
INNER JOIN sysobjects d
ON a.id = d.id
AND d.xtype = 'U'
AND d.name <> 'dtproperties'
LEFT JOIN syscomments e
ON a.cdefault = e.id
LEFT JOIN sys.extended_properties g
ON a.id = g.major_id
AND a.colid = g.minor_id
LEFT JOIN sys.extended_properties f
ON d.id = f.major_id
AND f.minor_id = 0
WHERE d.name = 'b' --查询的表名
ORDER BY a.id,
a.colorder;
结果如下: