首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个查询有关问题,多谢

2012-02-12 
一个查询问题,谢谢!sqlserver表a的结构和数据如下:area_idarea1A,B,C,D2A,B,D3A,C,D4A,D5B,C,D假如我传入

一个查询问题,谢谢!
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 行)

热点排行