Работая над новой хранимой процедурой TSQL, я хочу получить все строки, в которых значения в определенном столбце не начинаются с какого-либо определенного набора из 2 символьных подстрок.
Общая идея заключается в следующем:
SELECT * FROM table WHERE value NOT LIKE 's1%' AND value NOT LIKE 's2%' AND value NOT LIKE 's3%'
.
Подвох в том, что я пытаюсь сделать его динамическим, чтобы определенные подстроки можно было извлечь из другой таблицы в базе данных, к которой можно добавить больше значений.
Пока у меня естьникогда раньше не использовал оператор IN
, я думаю, что что-то в этом роде должно делать то, что я ищу, однако я не думаю, что возможно использовать подстановочные знаки с IN
, поэтому я не смогу сравнивать простоподстроки.
SELECT * FROM table WHERE value NOT IN (SELECT substrings FROM subTable)
Чтобы обойти это ограничение, я пытаюсь сделать что-то вроде этого:
SELECT * FROM table WHERE SUBSTRING(value, 1, 2) NOT IN (SELECT Prefix FROM subTable WHERE Prefix IS NOT NULL)
но яЯ не уверен, что это правильно, или если это самый эффективный способ сделать это.Я предпочитаю делать это в хранимой процедуре, но если это невозможно или неэффективно, я также могу динамически создавать запрос в C #.