大家好,有一个分页的存储过程,存储过程没有问题,是别人写的,也可以运行,就是里面有一句我不明白,其中部分代码如下:-- ********查询条件 - 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的语句里面会有逗号,与以往写法不同,希望高手给解释一下,谢谢大家

解决方案 »

  1.   

    在这句 
    select @F=@F+' and '',''+A.ProjTypeID+'','' like ''%,'+convert(nvarchar(30),@ProjType)+',%''  ' 
    后面,加上:
    print @F
    运行,你就知道是怎么回事了.
      

  2.   

    http://blog.csdn.net/zjcxc/category/125592.aspx 看邹老大的BLOG分页专题.
      

  3.   

    动态SQL, PRINT @F 就一目了然了。
      

  4.   

    如果有如以下格式的数据
    1,11,112,1,21,22,34如果要找出1的数据,直接like '%1%'是不行的,会把所有包含1的数据都找出来,
    要like '%,1,%'这样才行
    但是第一个数前面没有',',最后一个数后面没有','所以在条件和字段的前后都加',' 变成了这样:','+条件+',' like '%,'+字段+',%'也可写成这样 charindex(','+条件+',','%,'+字段+',%')>0
      

  5.   

    第一个数前面没有',',最后一个数后面没有','  那这条sql语句就变成了这样 and H.BBSStatus=1  and ','+A.ProjTypeID+',' like '%,35,%'  是不是也有问题啊,我是初学,不太明白
      

  6.   


    ','+A.ProjTypeID+',' like '%,35,%' 是对的。我上面的like,条件和字段的位置写反了