取表中非空列

最近在做用友U8的项目,U8中的数据库表字段太多,有的时候只需要知道非空列的值,所以就写了一下的一个方法,取得非空列

 

ContractedBlock.gif ExpandedBlockStart.gif SQL2005
 1declare @HeadTaleName nvarchar(50)
 2declare @codeColName nvarchar(50)
 3declare @codeColValue nvarchar(50)
 4
 5set @HeadTaleName = 'zpurRkdHead'
 6set @codeColName = 'ccode'
 7set @codeColValue = '0000000077'
 8
 9declare @cColumnName nvarchar(50)  
10declare @cColumnsNotNULL nvarchar(1000)
11declare @i int
12declare @count int
13declare @temp nvarchar(50)
14declare @sqls nvarchar(4000)
15
16set @cColumnName = ''
17set @cColumnsNotNULL =''
18set @temp = ''
19set @i = 0
20set @count = 0
21
22declare mycursor cursor for select name from syscolumns where id = object_id(@HeadTaleName)   --为所获得的数据集指定游标
23open mycursor                   --打开游标
24fetch next from mycursor into @cColumnName   --开始抓第一条数据
25while(@@fetch_status=0)     --如果数据集里一直有数据
26begin    
27    set @sqls = 'select @temp = '+ @cColumnName + ' from ' + @HeadTaleName + ' where ' + @codeColName + '' + @codeColValue
28    exec sp_executesql @sqls,N'@temp nvarchar(50) output', @temp output
29    if(@temp is not null)
30    begin
31        set @cColumnsNotNULL =@cColumnsNotNULL + @cColumnName + ','
32        set @i = @i + 1
33    end
34    fetch next from mycursor into @cColumnName   --跳到下一条数据
35end
36    set @cColumnsNotNULL = @cColumnsNotNULL + ','---如果 expression 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint;否则为 int
37    set @cColumnsNotNULL = substring(@cColumnsNotNULL,0,len(@cColumnsNotNULL)-1)
38close mycursor        --关闭游标
39deallocate mycursor  --删除游标
40
41select @i, @cColumnsNotNULL
42
43set @sqls = 'select ' + @cColumnsNotNULL +' from '+ @HeadTaleName + ' where ' + @codeColName + '' + @codeColValue
44exec(@sqls)
45

 

 

转载于:https://www.cnblogs.com/zhaoweiting/archive/2009/05/22/SQLServer2005.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值