Выбор в кавычках с ISNULL

Я пытаюсь создать динамический запрос в sybase, например:

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

Когда я передаю @stat как NULL, я получаю '' в качестве вывода, но ожидаемый результат - это технология, которая неверна

Если я передам @stat как NACK, он должен вернуть «NACK», который работает, как и ожидалось.

Спасибо за любые предложения о том, как достичь этого


person Prateek Gupta    schedule 06.10.2017    source источник


Ответы (2)


Честно говоря, вы, вероятно, хотите этого:

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

Не используйте tech = tech как неработоспособное (это не работает для NULLs). Вместо этого просто удалите сравнение.

person Gordon Linoff    schedule 06.10.2017
comment
Спасибо .. послужил моей цели - person Prateek Gupta; 06.10.2017

убери '' и повтори попытку

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

кажется, что добавление кавычек в нулевую функцию дает нулевое значение, можете ли вы изначально добавить кавычки к переменной в качестве альтернативы?

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
person Moudiz    schedule 06.10.2017
comment
В этом случае null обрабатывается правильно, но при передаче @stat = sample я получаю вывод как tech = sample, но я хочу вывести tech = 'sample' - person Prateek Gupta; 06.10.2017
comment
В этом случае, когда я передаю null в @stat, мы получаем вывод как tech = 'tech', что неверно :( в этом случае вывод должен быть tech= tech - person Prateek Gupta; 06.10.2017
comment
После добавления кавычек к самой переменной при передаче null в stat я получаю tech= - person Prateek Gupta; 06.10.2017
comment
Нет, не... Спасибо за ваш вклад - person Prateek Gupta; 06.10.2017