大家好,有一个分页的存储过程,存储过程没有问题,是别人写的,也可以运行,就是里面有一句我不明白,其中部分代码如下:-- ********查询条件 - Start********
declare @F nvarchar(2000),@T nvarchar(500) --变量定义
select @F=' and H.BBSStatus=1 ',@T=' inner join House_BBSInfo H on H.BBSID=A.BBSID '
if @DistrictID >0
select @F=@F+' and A.DistrictID='+convert(nvarchar(30),@DistrictID)+' ' if @ProjType >0
select @F=@F+' and '',''+A.ProjTypeID+'','' like ''%,'+convert(nvarchar(30),@ProjType)+',%'' '
if @IsDeco=1
select @F=@F+' and A.IsDeco=1 '
else
begin
if @DecoStatus<>''
select @F=@F+' and A.DecoStatus like ''%'+@DecoStatus+'%'' '
end
if @RegionID >0
select @F=@F+' and '',''+A.RegionID+'','' like ''%,'+convert(nvarchar(30),@RegionID)+',%'' ' if @SubwayID >0
select @F=@F+' and '',''+A.SubwayID+'','' like ''%,'+convert(nvarchar(30),@SubwayID)+',%'' '我不明白的是为什么那几个含有like的语句里面会有逗号,与以往写法不同,希望高手给解释一下,谢谢大家
declare @F nvarchar(2000),@T nvarchar(500) --变量定义
select @F=' and H.BBSStatus=1 ',@T=' inner join House_BBSInfo H on H.BBSID=A.BBSID '
if @DistrictID >0
select @F=@F+' and A.DistrictID='+convert(nvarchar(30),@DistrictID)+' ' if @ProjType >0
select @F=@F+' and '',''+A.ProjTypeID+'','' like ''%,'+convert(nvarchar(30),@ProjType)+',%'' '
if @IsDeco=1
select @F=@F+' and A.IsDeco=1 '
else
begin
if @DecoStatus<>''
select @F=@F+' and A.DecoStatus like ''%'+@DecoStatus+'%'' '
end
if @RegionID >0
select @F=@F+' and '',''+A.RegionID+'','' like ''%,'+convert(nvarchar(30),@RegionID)+',%'' ' if @SubwayID >0
select @F=@F+' and '',''+A.SubwayID+'','' like ''%,'+convert(nvarchar(30),@SubwayID)+',%'' '我不明白的是为什么那几个含有like的语句里面会有逗号,与以往写法不同,希望高手给解释一下,谢谢大家
select @F=@F+' and '',''+A.ProjTypeID+'','' like ''%,'+convert(nvarchar(30),@ProjType)+',%'' '
后面,加上:
print @F
运行,你就知道是怎么回事了.
1,11,112,1,21,22,34如果要找出1的数据,直接like '%1%'是不行的,会把所有包含1的数据都找出来,
要like '%,1,%'这样才行
但是第一个数前面没有',',最后一个数后面没有','所以在条件和字段的前后都加',' 变成了这样:','+条件+',' like '%,'+字段+',%'也可写成这样 charindex(','+条件+',','%,'+字段+',%')>0
','+A.ProjTypeID+',' like '%,35,%' 是对的。我上面的like,条件和字段的位置写反了