Запрос с предложением где проверка переменной с несколькими значениями - PullRequest
0 голосов
/ 29 декабря 2018

Сценарий: Я пытаюсь создать запрос, в котором я хочу получить несколько значений из таблицы.Сделать это, перечислив значения напрямую, просто:

select * from product.text_data
where text_data.field_label = "Owner" or text_data.field_label = "Admin" or text_data.field_label = "Rule";

Вопрос: Можно ли выполнить тот же запрос, но вместо этого подать список полей в переменную,и проверка переменной напрямую?

Пример:

set @idlist1 = ("Owner", "Admin", "Rule");
select * from product.text_data
where product.text_data.field_ref in @idlist1;

Проблема: Если я попытаюсь запустить это, я получу

SQL Error (1241): Operand should contain 1 column(s)

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Невозможно определить список как переменную.Вам придется объявить вашу переменную как временную таблицу.

В вашем случае вы, похоже, ищете динамический sql.

declare @myList varchar(100)
set @myList = '( "Owner", "Admin", "Rule" )'
exec('SELECT * FROM product.text_data WHERE product.text_data.field_ref IN' + @myList)
0 голосов
/ 29 декабря 2018

Вам не хватает '' для двух скобок ()

переменная должна быть установлена ​​следующим образом -

set @idlist1 = '("Owner","Admin","Rule")'
...