SQLSERVER 如何查询某表某字段的数据类型,想好久了,有时间的朋友麻烦告知下,多谢!

解决方案 »

  1.   

    --SQL的请借鉴
    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'
    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='Employee'   --查询这个表
    AND A.name = 'id' --查询这个字段
    ORDER BY A.ID,A.COLORDER 
      

  2.   

    select b.name as 表名,a.name as 字段名,c.name as 数据类型,a.length as 长度
    from syscolumns a
    inner join sysobjects b on a.id=b.id
    inner join systypes c on a.xtype=c.xtype
      

  3.   

    select    a.name as colname,    b.name as typenamefrom    syscolumns a,systypes b    where    a.xusertype=b.xusertype    and    a.id=object_id('表名')