CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

在线等待,紧急求助,获取列的描述值

楼主lanxin2001(兰心)2003-11-01 17:55:11 在 MS-SQL Server / 基础类 提问

我想请教各位高手,在SQLSERVER2000里怎样在能够获取某个字段的描述值的同时能够获取该字段的值? 问题点数:100、回复次数:8Top

1 楼pengdali()回复于 2003-11-01 17:59:03 得分 90

SELECT    
  (case   when   a.colorder=1   then   d.name   else   ''   end)   N'表名',  
  a.colorder   N'字段序号',  
  a.name   N'字段名',  
  (case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   '√'else   ''   end)   N'标识',  
  (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)   N'主键',  
  b.name   N'类型',  
  a.length   N'占用字节数',  
  COLUMNPROPERTY(a.id,a.name,'PRECISION')   as   N'长度',  
  isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)   as   N'小数位数',  
  (case   when   a.isnullable=1   then   '√'else   ''   end)   N'允许空',  
  isnull(e.text,'')   N'默认值',  
  isnull(g.[value],'')   AS   N'字段说明'  
  --into   ##tx  
   
  FROM     syscolumns     a   left   join   systypes   b    
  on     a.xtype=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   sysproperties   g  
  on   a.id=g.id   AND   a.colid   =   g.smallid      
  order   by   object_name(a.id),a.colorderTop

2 楼pengdali()回复于 2003-11-01 17:59:25 得分 0

只得到表描述:  
   
  sp_MShelpcolumns   N'dbo.table2',   null,   'name',   1Top

3 楼pengdali()回复于 2003-11-01 17:59:45 得分 0

或:  
   
  select   rtrim(b.name)   as   colname  
  ,case   when   h.id   is   not   null   then   'PK'   else   ''   end   as   primarykey  
  ,type_name(b.xusertype)   +   case   when   b.colstat   &   1   =   1   then   '[ID('   +   convert(varchar,ident_seed(a.name))   +   ','   +   convert(varchar,ident_incr(a.name))   +   ')]'   else   ''   end   as   type  
  ,b.length  
  ,case   b.isnullable   when   0   then   'N'   else   'Y'   end   as   [isnull]  
  ,isnull(e.text,'')   as   [default]  
  ,isnull(c.value,'')   as   descript    
  from   sysobjects   a,syscolumns   b    
  left   outer   join   sysproperties   c   on   b.id   =   c.id   and   b.colid   =   c.smallid    
  left   outer   join   syscomments   e   on   b.cdefault   =   e.id  
  left   outer   join   (select   g.id,g.colid   from   sysindexes   f,sysindexkeys   g   where   f.id   =   g.id   and   f.indid   =   g.indid   and   f.indid   >   0   and   f.indid   <   255   and   (f.status   &   2048)<>0)   h   on   b.id   =   h.id   and   b.colid   =   h.colid  
  where   a.id   =   b.id  
  and   a.id   =   object_id('titles')   --tablename改成你要导出的表的名称  
  order   by   b.colidTop

4 楼txlicenhe(马可)回复于 2003-11-01 18:00:19 得分 10

Create   view   fielddesc          
  as          
  select   o.name   as   oname,   c.name   as   cname,convert(varchar(30),p.value)   as   value,p.smallid   as   psmallid,t.name   as   tname    
  from   syscolumns   c      
  join   systypes   t   on   c.xtype   =   t.xtype  
  join   sysobjects   o   on   o.id=c.id    
  left   join         sysproperties   p   on   p.smallid=c.colid   and   p.id=o.id          
  where   o.xtype='U'          
   
  查询时:  
  Select   *   from   fielddesc   where   oname   =   '你的表名'  
  Top

5 楼lanxin2001(兰心)回复于 2003-11-01 18:20:00 得分 0

大力,马可,你们好  
  单独的获得列的描述值我会,  
  是这样的,比如表里有一个子段的子段名是'bh''xm'等,它对应的描述是“编号”"姓名"等,我如何获得编号为0101的这条记录所对应的这条记录各个字段的描述值和值Top

6 楼pengdali()回复于 2003-11-01 18:28:02 得分 0

declare   @表名   varchar(10)  
  set   @表名='table1'  
   
  declare   @a   varchar(8000)  
  set   @a=''  
   
  select   @a=@a+','+c.name+'   '+isnull(convert(varchar(30),p.value),'')   from   syscolumns   c   join   sysobjects   o   on   o.id=c.id   left   join   sysproperties   p   on   p.smallid=c.colid   and   p.id=o.id   where   o.xtype='U'   and   o.name   =@表名  
   
  set   @a=right(@a,len(@a)-1)  
   
  exec   ('select   '+@a+'   from   '+@表名+'   where   编号=0101')Top

7 楼lanxin2001(兰心)回复于 2003-11-02 15:21:08 得分 0

大力,还是不行啊,这段代码理有问题,Top

8 楼pengdali()回复于 2003-11-02 15:24:46 得分 0

不可能,我试过了,你的代码?Top

相关问题

  • 紧急求助:C#远程获取时间(在线等待…………)
  • 紧急等待!!
  • 紧急,在线等待
  • 紧急求救!等待中.....
  • 紧急求救::如何用获取Query_String获取中文的搜索条件?〉〉〉〈〈〈!!!
  • 如何获取计算机的名称,描述,IP地址和MAC地址?
  • jdbc如果获取数据表字段的label(英文字段名的描述)
  • 如何获取窗口类型?(再现等待)
  • 怎么样获取MonthCalendar的日期?在线等待!
  • 如何获取file控件的值!(在线等待)

关键词

  • 字段
  • indid
  • colid
  • 描述值
  • isnull
  • smallid
  • join
  • 获取
  • syscolumns
  • xtype

得分解答快速导航

  • 帖主:lanxin2001
  • pengdali
  • txlicenhe

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo