我试图在sybase中构建一个动态查询,如:
SELECT @v_query = @v_query +“tech =”+ ISNULL(’’’‘+ @ stat +’’’‘,‘tech’)当我将@stat传递为NULL时,我得到’’作为输出,但预期输出是技术…
说实话,你可能想要这个:
SELECT @v_query = @v_query + (CASE WHEN @stat IS NULL THEN '1=1' ELSE 'tech = ''' + @stat + '''' END)
不要用 tech = tech 作为一个无操作(它不起作用 NULL S)。相反,只需删除比较。
tech = tech
NULL
删除''并重试
declare @SQL_TXT varchar(100) declare @stat varchar(100) begin select @stat= null SELECT @SQL_TXT=@SQL_TXT + ' tech =' + ISNULL(@stat,'tech') print @SQL_TXT end print tech =tech
编辑你可以这样做
declare @SQL_TXT varchar(100) declare @stat varchar(100) begin select @stat= null SELECT @SQL_TXT=@SQL_TXT + ' tech = ''' + ISNULL(@stat,'tech') +'''' print @SQL_TXT end
似乎在null函数中添加引号会给出null值,你可以在变量中添加引号作为替代吗?
declare @SQL_TXT varchar(100) declare @stat varchar(100) begin select @stat= 'SAMPLE' select @stat= ''''+@stat+'''' SELECT @SQL_TXT=@SQL_TXT + ' tech = ' + ISNULL(@stat,'tech') print @SQL_TXT end