本帖最后由 cyh027 于 2013-11-26 10:45:22 编辑

解决方案 »

  1.   

    DECLARE @sql_com NCHAR(100)
    DECLARE @sql_where NCHAR(70)
    DECLARE @jsbm NCHAR(3)
    SET @jsbm = 'aa'
    SET @sql_com = 'select * from tb1 where 1=1 '
    SET @sql_where = '' 
    SELECT  @jsbm AS '传回参数'
    IF ( @jsbm = '' )
        BEGIN
            SET @sql_where = '无字符'
        END
    ELSE
        BEGIN
            SET @sql_where = @sql_where + ' and jsbm = '+ @jsbm  
        END
    SET @sql_com = @sql_com + @sql_where
    SELECT  @sql_where AS '过滤条件'
    SELECT  @sql_com AS '命令部份' 
      

  2.   

    因为你的@sql_where类型是nchar(70),在赋值set @sql_where =''的时候会自动填满70个字符
    所以再次set @sql_where=@sql_where +' and jsbm = @jsbm  '的时候还是只有70个空格两个方法:
    1:declare @sql_where nvarchar(70)
    2:set @sql_where=rtrim(@sql_where) +' and jsbm = @jsbm  '
      

  3.   

    好像是NChar的问题,我改成varchar就可以了
    DECLARE @sql_com  VARCHAR(100) 
    DECLARE @sql_where  VARCHAR(70) 
    DECLARE @jsbm VARCHAR(3) 
    SET @jsbm = 'aa'
    SET @sql_com = 'select * from tb1 where 1=1 '
    SET @sql_where = '' 
    SELECT  @jsbm AS '传回参数'
    IF ( @jsbm = '' )     
    BEGIN        
    SET @sql_where = '无字符'    
    END
    ELSE    
    BEGIN        SET @sql_where = @sql_where + ' and jsbm = '+ @jsbm       
    END
    SET @sql_com = @sql_com + @sql_where 
    SELECT  @sql_where AS '过滤条件'
    SELECT  @sql_com AS '命令部份' 
      

  4.   

    加上字符长度是一个,另外+' and jsbm = @jsbm  ' 这里变量要提出来
      

  5.   


    declare @sql_com nvarchar(100),@sql_where nvarchar(70),@jsbm nvarchar(3)set @jsbm=N'aa'
    set @sql_com=N'select * from tb1 where 1=1 '
    set @sql_where=N''if (@jsbm=N'')
    begin
      set @sql_where=N'无字符'
    end
    else
    begin
      set @sql_where=@sql_where+N' and jsbm=N'''+@jsbm+N''' '
    endset @sql_com=@sql_com+@sql_whereselect @sql_where as '过滤条件'
    select @sql_com as '命令部份' /*
    过滤条件
    ----------------------------------------------------------------------
     and jsbm=N'aa' 
    命令部份
    -----------------------------------------------------------------------
    select * from tb1 where 1=1  and jsbm=N'aa' 
    */
      

  6.   


    --try this
    declare @sql_com VARCHAR(2000)
    declare @sql_where VARCHAR(2000)
    declare @jsbm VARCHAR(10)
    set @jsbm='aa'
    set @sql_com='select * from tb1 where 1=1 ' 
    select @jsbm as '传回参数'
    if (@jsbm = '')
    begin
    set @sql_where='无字符'
    end
    else
    begin
    set @sql_where=@sql_where +' and jsbm = @jsbm  '
    end
    set @sql_com=@sql_com + @sql_where
    select @sql_where as '过滤条件'
    select @sql_com as '命令部份'