if (@po_linkman is not null)
begin
 set @where= @where+'and po_linkman='+@po_linkman+' '
end 
无论@po_linkman是不是null  set @where= @where+'and po_linkman='+@po_linkman+' '都会被执行,不知道是什么原因,请指教,谢谢了

解决方案 »

  1.   

    请打印一下你的@PO_LINKMAN 看一下变量
      

  2.   

     declare @po_linkman int
    if (@po_linkman is  null)
    begin
     print 1
    end 
    else 
    begin
    print 0
    end
      

  3.   

    declare @po_linkman nvarchar(200)
    set @po_linkman ='yes'
    declare @where nvarchar(2000)
    set @where =''if (@po_linkman is not null)
    begin
     set @where= @where+'and po_linkman='+@po_linkman+' '
     print @where
    end 
      

  4.   

    会不会是空字符呢,加个不等于空字符试试if (@po_linkmanis not null and @po_linkmanis<>'')
      

  5.   


    if (isnull(@po_linkmanis,'')<>'')
    begin
       .....
    end
      

  6.   

    因为你只让执行 set @where= @where+'and po_linkman='+@po_linkman+' ',不是吗?