使用 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
用作空操作(它不适用于 NULL
s)。相反,只需删除比较。
我正在尝试在 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
用作空操作(它不适用于 NULL
s)。相反,只需删除比较。