[生成数据字典]取数据库表中字段的描述信息

原创
2016-06-07 14:59:31 788浏览

Sql2000: ========================== SELECT SysObjects.Name, -- 表名 SysColumns.Name, -- 字段名 SysTypes.Name, -- 字段类型 SysColumns.Length, -- 字段长度 SysProperties.Value -- 字段描述 FROM SysObjects, SysTypes, SysColumns LEFT JOIN SysPro

Sql2000:
==========================

SELECT SysObjects.Name, --表名
SysColumns.Name, --字段名
SysTypes.Name, --字段类型
SysColumns.Length, --字段长度
SysProperties.Value --字段描述
FROM SysObjects,
SysTypes,
SysColumns
LEFT JOIN
SysProperties
ON (Syscolumns.Id = Sysproperties.Id AND Syscolumns.Colid =
Sysproperties.Smallid)
WHERE (Sysobjects.Xtype ='u' OR Sysobjects.Xtype ='v'
)
AND Sysobjects.Id =
Syscolumns.Id
AND SysTypes.XType =
Syscolumns.XType
AND Sysobjects.Name = 'Contract' --指字要查找的表名

ORDER BY smallid




SqlServer2005:
=============================

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
='Contract' --如果只查询指定表,加上此条件

order by
a.id,a.colorder

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。