Where Case

--第一次看到这样写的,where 里面case,觉得很厉害

create table A(id int,a varchar(6),b varchar(6),c varchar(6),d varchar(6),e varchar(6))
insert into A select 1,'面包','牛奶','尿布','啤酒',NULL 
insert into A select 2,'可乐','牛奶','尿布',NULL  ,NULL 
insert into A select 3,'面包','可乐','牛奶',NULL  ,NULL 
insert into A select 4,'可乐','啤酒',NULL  ,NULL  ,NULL 
insert into A select 5,'可乐','牛奶','尿布','花生',NULL 
insert into A select 6,'可乐','牛奶','花生',NULL  ,NULL 
insert into A select 7,'面包','可乐','牛奶','尿布','啤酒'
insert into A select 8,'面包','牛奶','尿布','花生','啤酒'
insert into A select 9,'面包',NULL  ,NULL  ,NULL  ,NULL 
go

create procedure shiyan(@tname varchar(10),@num int)
as
begin
    declare @sql varchar(8000)
    set @sql=''
   
    select
        @sql=@sql+'+(case when '+name+' is null then 0 else 1 end)'
    from
        syscolumns
    where 
        id=object_id(@tname) and name!='id'
   
    set @sql='delete '+@tname+' where '+stuff(@sql,1,1,'')+'='+rtrim(@num)
   
    exec(@sql)
end
go 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值