使用 ISNULL 选择引号

Selecting with quotes with ISNULL

我正在尝试在 sybase 中构建动态查询,例如:

SELECT @v_query = @v_query + " tech= "+ ISNULL(''''+@stat+'''',"tech")

当我将 @stat 作为 NULL 传递时,我得到 '' 作为输出,但预期输出是错误的技术

如果我将@stat作为NACK传递,它应该return 'NACK'按预期工作

感谢您就如何实现这一目标提出任何建议

删除 '' 并重试

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

说实话,你可能想要这个:

SELECT @v_query = @v_query + 
                  (CASE WHEN @stat IS NULL THEN '1=1'
                        ELSE 'tech = ''' + @stat + ''''
                   END)

不要将 tech = tech 用作空操作(它不适用于 NULLs)。相反,只需删除比较。