将中所有表的列信息显示出来

来源:互联网 发布:大的淘宝店铺转让平台 编辑:程序博客网 时间:2024/05/16 01:55
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
 正在作一个关于SQLSERVER导入文件的程序,要读取数据库中的列的信息,从网上找了很多资料,终于总结出来比较理想的sql语句,执行后返回的列分别是:表名、列名、列类型、列长度、列描述、是否主键,语句如下:



1 SelectSysobjects.NameAsTb_name,Syscolumns.NameAsCol_name,Systypes.NameAsCol_type,Syscolumns.LengthAsCol_len,Isnull(Sysproperties.Value,Syscolumns.Name)AsCol_memo,
2 CaseWhenSyscolumns.NameIn
3 (Select主键=A.Name
4 FromSyscolumnsA
5 InnerJoinSysobjectsBOnA.Id=B.IdAndB.Xtype='U'AndB.Name<>'Dtproperties'
6 WhereExists(Select1FromSysobjectsWhereXtype='Pk'AndNameIn(
7 SelectNameFromSysindexesWhereIndidIn(
8 SelectIndidFromSysindexkeysWhereId=A.IdAndColid=A.Colid
9 )))
10 AndB.Name=Sysobjects.Name
11 )
12 Then1Else0EndAsIs_key
13
14 FromSysobjects,Systypes,Syscolumns
15 LeftJoinSyspropertiesOn(Syscolumns.Id=Sysproperties.IdAnd
16 Syscolumns.Colid=Sysproperties.Smallid)
17
18 Where(Sysobjects.Xtype='U'OrSysobjects.Xtype='V')
19 AndSysobjects.Id=Syscolumns.IdAndSystypes.Xtype=Syscolumns.Xtype
20 AndSystypes.Name<>'Sysname'AndSysobjects.NameLike'%'OrderBySysobjects.Name,Syscolumns.Colid


结果如图:


<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>