create table os(aa varchar(50),bb varchar(50))
insert into os select 'a01','01,02'
insert into os select 'a02','02,03,05'
insert into os select 'b06','01,'
insert into os select 'c09','02,03'
create proc dddd
@bb varchar(100)
as
declare @sql varchar(8000)
set @sql='charindex('','+replace(@bb,',',','','',''+bb+'','')>0 or charindex('',')+','','',''+bb+'','')>0'
set @sql='select * from os where '+@sql
exec(@sql)exec dddd @bb='01,03,05'
insert into os select 'a01','01,02'
insert into os select 'a02','02,03,05'
insert into os select 'b06','01,'
insert into os select 'c09','02,03'
create proc dddd
@bb varchar(100)
as
declare @sql varchar(8000)
set @sql='charindex('','+replace(@bb,',',','','',''+bb+'','')>0 or charindex('',')+','','',''+bb+'','')>0'
set @sql='select * from os where '+@sql
exec(@sql)exec dddd @bb='01,03,05' 强
insert into tb select 'a01','01,02'
insert into tb select 'a02','02,03,05'
insert into tb select 'b06','01'
insert into tb select 'c09','02,03' declare @s varchar(10),@sql varchar(8000)
set @s='01,05'
set @sql='select '+replace(@s,',',' as bb union all select ')
exec('select distinct a.* from tb a,('+@sql+') b where charindex(ltrim(b.bb),a.bb)>0')aa bb
a01 01,02
a02 02,03,05
b06 01
--函数比较困难,应该函数内不能执行动态SQL,还是用存储过程吧```create table os(aa varchar(50),bb varchar(50))
insert into os select 'a01','01,02'
insert into os select 'a02','02,03,05'
insert into os select 'b06','01,'
insert into os select 'c09','02,03'
create proc dddd
@bb varchar(100)
as
declare @sql varchar(8000)
set @sql='charindex('','+replace(@bb,',',','','',''+bb+'','')> 0 or charindex('',')+','','',''+bb+'','')> 0'
set @sql='if exists(select 1 from os where '+@sql +') select 1 else select -1'
exec(@sql) exec dddd @bb='01,03,05' --结果:返回1
exec dddd @bb='04,06' --结果:返回-1
不过我不想要存储过程
想要一个function因为这个查询结果是我另外查询的条件。