巧用函数,使Sql中in的用法更多变

在Sql中我们经常会用到in

普遍的写法为

 where xx in ('1','2','3')

通过函数写法为:

IF EXISTS ( SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[ArrayToTable]') 
AND type IN ( N'FN', N'IF', N'TF', N'FS', N'FT' ) ) 
DROP FUNCTION [dbo].[ArrayToTable]
GO

create function ArrayToTable(@arrayList varchar(2000),@split varchar(2))
returns @result table(subscript int,value char(200))
as
 begin
 declare @i int,
 @index int
 set @i = 0
 set @index = charindex(@split,@arrayList)
 while(@index <> 0)
 begin
 insert into @result(subscript,value)
 values(@i,substring(@arrayList,1,@index-1))
 set @arrayList = stuff(@arrayList,1,@index,'')
 set @index = charindex(@split,@arrayList)
 set @i = @i+1
 end
 insert into @result(subscript,value)
 values(@i,@arrayList)
 return
 end


declare @lineData varchar(200)
set @lineData='1,2,3,4'

where (@lineData is null or XX in (select value from dbo.ArrayToTable(@lineData,',')))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值