现在的位置: 首页 > 综合 > 正文

获取SQL SERVER 2000/2005数据库字段属性

2012年11月24日 ⁄ 综合 ⁄ 共 2878字 ⁄ 字号 评论关闭
SQL SERVER 2000 和 2005结构是不一样的,所以在获取SQL SERVER 2000/2005字段属性时需要分别来获取。

1。SQL SERVER 2000

 1
 2SELECT 
 3    字段名     = a.name,
 4    主键       = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
 5                     SELECT name FROM sysindexes WHERE indid in(
 6                        SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '1' else '0' end,
 7    标识       = CASE WHEN COLUMNPROPERTY(a.id, a.name, 
 8                      'IsIdentity'= 1 THEN '1' ELSE '0' END
 9    类型       = b.name,
10    占用字节数 = a.length,
11    长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
12    小数       =  a.xscale,
13    可空       = a.isnullable,
14    默认值     = isnull(e.text,''),
15    字段说明   = isnull(g.[value],'')
16FROM 
17    syscolumns a
18left join 
19    systypes b 
20on 
21    a.xusertype=b.xusertype
22inner join 
23    sysobjects d 
24on 
25    a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
26left join 
27    syscomments e 
28on 
29    a.cdefault=e.id
30left join 
31    sysproperties g 
32on 
33    a.id=g.id and a.colid=g.smallid  
34left join 
35    sysproperties f 
36on 
37    d.id=f.id and f.smallid=0
38where 
39    d.name='UserAccount'

d.name = 'UserAccount',UserAccount为你需要查找的数据表。

2。SQL SERVER 2005

 1SELECT     CASE WHEN EXISTS
 2                          (SELECT     1
 3                            FROM          sysobjects
 4                            WHERE      xtype = 'PK' AND parent_obj = a.id AND name IN
 5                                                       (SELECT     name
 6                                                         FROM          sysindexes
 7                                                         WHERE      indid IN
 8                                                                                    (SELECT     indid
 9                                                                                      FROM          sysindexkeys
10                                                                                      WHERE      id = a.id AND colid = a.colid))) THEN '1' ELSE '0' END AS 'key'CASE WHEN COLUMNPROPERTY(a.id, a.name, 
11                      'IsIdentity'= 1 THEN '1' ELSE '0' END AS 'identity', a.name AS ColName, c.name AS TypeName, a.length AS 'byte'COLUMNPROPERTY(a.id, a.name, 
12                      'PRECISION'AS 'length', a.xscale, a.isnullable, ISNULL(e.text''AS 'default'ISNULL(p.value, ''AS 'comment'
13FROM         sys.syscolumns AS a INNER JOIN
14                      sys.sysobjects AS b ON a.id = b.id INNER JOIN
15                      sys.systypes AS c ON a.xtype = c.xtype LEFT OUTER JOIN
16                      sys.syscomments AS e ON a.cdefault = e.id LEFT OUTER JOIN
17                      sys.extended_properties AS p ON a.id = p.major_id AND a.colid = p.minor_id
18WHERE     (b.name = 'keyfactory'AND (c.status <> '1')

b.name = 'Keyfactory','Keyfactory'为你想要查找的数据表。

抱歉!评论已关闭.