Select 
表名=Case When A.ColOrder=1 Then D.Name 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 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.Xtype=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 sysproperties G On A.ID=G.ID And A.colid=G.smallid 
Where D.Name='yourtablename' --你要查詢的表名
Order By A.ID,A.ColOrder

解决方案 »

  1.   

    精簡一下Select 
    表名=Case When A.ColOrder=1 Then D.Name Else '' End, 
    字段序号=A.ColOrder, 
    字段名=A.Name, 
    类型=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(G.[value],'') 
    From syscolumns A 
    Left Join systypes B On A.Xtype=B.xusertype 
    Inner Join sysobjects D On A.ID=D.ID And D.Xtype='U' And D.Name<>'dtproperties' 
    Left Join sysproperties G On A.ID=G.ID And A.colid=G.smallid 
    Where D.Name='yourtablename' --你要查詢的表名
    Order By A.ID,A.ColOrder
      

  2.   

    因为想支持多中数据库
    谁有oracle的啊
    先谢谢了