分享一个sqlserver 查询表的列名称、说明、备注、类型等内容的语句:
SELECT 表名 = CASEWHEN a.colorder = 1 THENd.nameELSE''END,表说明 = CASEWHEN a.colorder = 1 THENISNULL(f.value, '')ELSE''END,字段序号 = a.colorder,字段名 = a.name,标识 = CASEWHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN'√'ELSE''END,主键 = CASEWHEN EXISTS(SELECT 1FROM sysobjectsWHERE xtype = 'PK'AND parent_obj = a.idAND name IN(SELECT nameFROM sysindexesWHERE 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),允许空 = CASEWHEN a.isnullable = 1 THEN'√'ELSE''END,默认值 = ISNULL(e.text, ''),字段说明 = ISNULL(g.[value], '')
FROM syscolumns aLEFT JOIN systypes bON a.xusertype = b.xusertypeINNER JOIN sysobjects dON a.id = d.idAND d.xtype = 'U'AND d.name <> 'dtproperties'LEFT JOIN syscomments eON a.cdefault = e.idLEFT JOIN sys.extended_properties gON a.id = g.major_idAND a.colid = g.minor_idLEFT JOIN sys.extended_properties fON d.id = f.major_idAND f.minor_id = 0
WHERE d.name = 'b' --查询的表名
ORDER BY a.id,a.colorder;
结果如下: