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 '命令部份'
好像是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 '命令部份'
加上字符长度是一个,另外+' and jsbm = @jsbm ' 这里变量要提出来
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' */
--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 '命令部份'
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 '命令部份'
所以再次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 '
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 '命令部份'
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'
*/
--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 '命令部份'