一个查询问题,谢谢!
sqlserver表a的结构和数据如下:
area_id area
1 'A,B,C,D '
2 'A,B,D '
3 'A,C,D '
4 'A,D '
5 'B,C,D '
假如我传入参数@area= 'A,D '
想返回1到4行的数据的查询如何写?
PS:查询条件是字段area中既要有 'A '也要有 'D '存在,因为第5行里面只有 'D '没有 'A '
所以不符合条件
------解决方案--------------------area like '%A% ' or area like '%D% '
------解决方案--------------------like 进行模糊查询
------解决方案--------------------create table test(area_id int,area varchar(20))
insert test select 1, 'A,B,C,D '
union all select 2, 'A,B,D '
union all select 3, 'A,C,D '
union all select 4, 'A,D '
union all select 5, 'B,C,D '
select * from test
where charindex( ',A, ', ', '+area+ ', ')> 0 and charindex( ',D, ', ', '+area+ ', ')> 0
------解决方案--------------------用函数试试。
------解决方案--------------------楼上居然可以连续回复5次?
CSDN不是最多连续回复3次 ?
------解决方案--------------------create table #tmp(area_id int identity(1,1) primary key not null,area varchar(50))
insert #tmp(area) values( 'A,B,C,D ')
insert #tmp(area) values( 'A,B,D ')
insert #tmp(area) values( 'A,C,D ')
insert #tmp(area) values( 'A,D ')
insert #tmp(area) values( 'B,C,D ')
select * from #tmp where area like '%A%D% '
drop table #tmp
返回:
area_id area
----------- --------------------------------------------------
1 A,B,C,D
2 A,B,D
3 A,C,D
4 A,D
(所影响的行数为 4 行)