Есть ли какой-нибудь эквивалент [WHERE col IN (%)] в SQLite? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть запрос SQLite, где мне нужна возможность получить строки, в которых определенный столбец (A, ниже) может быть любым (или подстановочным знаком) или 1 из нескольких опций.

Это работает для подстановочных знаков илиодиночные значения, но не кратные:

SELECT * FROM table WHERE A LIKE "%"
SELECT * FROM table WHERE A LIKE "1"

Это работает для одиночных или множественных значений, но не для подстановочных знаков:

SELECT * FROM table WHERE A IN (1)
SELECT * FROM table WHERE A IN (1, 2, 3)

То, что я хотел бы сделать, это что-то вроде этого:

SELECT * FROM table WHERE A IN (%)

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

SELECT * FROM table WHERE A IN (1, 2, 3) AND B IN (4, 5, 6) AND C IN (%) AND D IN (7, 8)

Так что вложенные циклы "if" становятся довольно громоздкими.

Итак, есть ли способ использовать подстановочный знак с WHERE IN или способ иметь несколько возможностей в WHERE LIKE?

1 Ответ

0 голосов
/ 07 июня 2018

Если столбец определен как NOT NULL, вы можете использовать:

SELECT * FROM table WHERE A IN (A);
                          --for not nullable column it's equivalent of 1=1

DBFiddle Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...