高峰之巅 发表于 2017-12-14 12:30:43

sql server递归子节点、父节点,sql查询表结构,根据字段名查所在表

SELECTCASE WHEN col.colorder = 1 THEN obj.nameELSE ''  END AS 表名 ,
  col.colorder AS 序号 ,
  col.name AS 列名 ,
  ISNULL(ep., '') AS 列说明 ,
  t.name AS 数据类型 ,
  col.length AS 长度 ,
  ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数 ,
  CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'
  ELSE ''
  END AS 标识 ,
  CASE WHEN EXISTS ( SELECT   1
  FROM   dbo.sysindexes si
  INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
  AND si.indid = sik.indid
  INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
  AND sc.colid = sik.colid
  INNER JOIN dbo.sysobjects so ON so.name = si.name
  AND so.xtype = 'PK'
  WHERE    sc.id = col.id
  AND sc.colid = col.colid ) THEN '√'
  ELSE ''
  END AS 主键 ,
  CASE WHEN col.isnullable = 1 THEN '√'
  ELSE ''
  END AS 允许空 ,
  ISNULL(comm.text, '') AS 默认值
  
FROM    dbo.syscolumns col
  LEFTJOIN dbo.systypes t ON col.xtype = t.xusertype
  INNER JOIN dbo.sysobjects obj ON col.id = obj.id
  AND obj.xtype = 'U'
  AND obj.status >= 0
  LEFTJOIN dbo.syscomments comm ON col.cdefault = comm.id
  LEFTJOIN sys.extended_properties ep ON col.id = ep.major_id
  AND col.colid = ep.minor_id
  AND ep.name = 'MS_Description'
  LEFTJOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
  AND epTwo.minor_id = 0
  AND epTwo.name = 'MS_Description'
  
WHERE   obj.name = 'userTab'
  
ORDER BY col.colorder;

az18 发表于 2017-12-14 13:31:19

111111111
页: [1]
查看完整版本: sql server递归子节点、父节点,sql查询表结构,根据字段名查所在表