如何获取指定表的列和数据类型

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,
占用字节   =   A.LENGTH,
长度                     =   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 ' and d.name='要查询的表名'
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
ORDER   BY   
A.ID,A.COLORDER

posted @ 2010-12-19 13:21  老高dotnet实践  阅读(252)  评论(0编辑  收藏  举报