sql server 2005查询字段信息语句示例

发布时间:2020-06-25编辑:脚本学堂
sql2005查询字段信息的sql语句,使用系统表sysindexkeys、syscolumns获取数据库字段信息,需要的朋友参考下。

代码如下:
 

复制代码 代码示例:
select  
(case when a.colorder=1 then d.name else '' end) as 表名, 
a.colorder as 字段序号, 
a.name as 字段名, 
(case when columnproperty(a.id,a.name,'IsIdentity')=1 then '√' else '' end) as 标识, 
(case when  
    (select count(*) from sysobjects where  
        (name in  
            (select name from sysindexes where (id=a.id) and  
                (indid in  
                    (select indid from sysindexkeys where (id=a.id) and (colid in 
                        (select colid from syscolumns where (id=a.id) and (name=a.name) 
                        ) 
                    ) 
                ) 
            ) 
        ) 
    ) 
 and (xtype='PK'))>0 then '√' else '' end) as 主键, 
b.name as 类型, 
a.length as 占用字节数, 
columnproperty(a.id,a.name,'PRECISION') as 长度, 
isnull(columnproperty(a.id,a.name,'Scale'),0) as 小数位数, 
(case when a.isnullable=1 then '√' else '' end) as 允许空, 
isnull(e.text,'') as 默认值, 
isnull(g.[value],'') as 字段说明 
from syscolumns a  
left join systypes b on a.xtype=b.usertype 
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 
where d.name='COM_SEQUENCE' 
order by a.id,a.colorder 
 

 
以上语句未免复杂了些,以下是优化后版本:
 

复制代码 代码示例:
select  
(case when a.colorder=1 then d.name else '' end) as tableName, 
a.name as fieldName, 
isnull(g.[value],'') as fieldDes 
from syscolumns a  
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' 
left join sys.extended_properties g on a.id=g.major_id and a.colid =g.minor_id 
--where d.name=''  --要查询的表 
order by a.id,a.colorder