日期:2014-05-18  浏览次数:20534 次

查询字符中是否包含字符串中的某值 ,号分隔
查询表tableA 中的info字段,是否包含了 如"1,3,5"中的其中一个数值

info字段的内容也是 1,2,3这种数字加,的结构

注意:sql语句中,不可手工折解1,3,5字符

------解决方案--------------------
SQL code

--> 测试数据:[test]
if object_id('[test]') is not null 
drop table [test]
create table [test](
[id] int,
[info] varchar(6)
)
go
insert [test]
select 1,'1,2,3' union all
select 2,'1,3' union all
select 3,'4,5,6' union all
select 4,'2,4,16'
go


if OBJECT_ID('pro_test')is not null
drop proc pro_test
go
create proc pro_test
(
@str varchar(20)
)
as
create table #test(
id int identity,
value int
)
--declare @str varchar(1000)
--set @str='1,2,3'
declare @sql varchar(1000)
set @sql='insert #test(value)
           select '+REPLACE(@str,',',' union all select ')
print @sql
exec(@sql)
select 
    distinct a.*
from 
    test a
inner join 
    #test b
on
    CHARINDEX(','+LTRIM(b.value)+',',''+a.[info]+',')>0
go
--主意,我理解的你的包含是指info字段同时包含所给字符串中的没一个数字
exec pro_test '1,3,4'
/*
id    info
1    1,2,3
2    1,3
4    2,4,16
*/

--再不是这样就只有帮顶帖子了