Как можно задать несколько условий для оператора LIKE, используя одну строку кода, например, для значений '%1%', '%2%', и так далее?

Как выполнить запрос, чтобы выбрать записи из таблицы test1, удовлетворяющие условию tranz_acct, содержащему несколько значений ('99449872', '23424232', '34534535') с использованием оператора LIKE?
  • 6 мая 2024 г. 10:50
Ответы на вопрос 2
Для задания нескольких условий с оператором LIKE можно воспользоваться ключевым словом OR. Например, если нужно выбрать записи, удовлетворяющие условиям '%1%', '%2%' и '%3%', можно сделать следующим образом:

SELECT * FROM table_name WHERE column_name LIKE '%1%' OR column_name LIKE '%2%' OR column_name LIKE '%3%';

Для выполнения запроса, чтобы выбрать записи из таблицы test1, удовлетворяющие условию tranz_acct, содержащему несколько значений ('99449872', '23424232', '34534535'), также можно воспользоваться оператором LIKE и ключевым словом OR:

SELECT * FROM test1 WHERE tranz_acct LIKE '%99449872%' OR tranz_acct LIKE '%23424232%' OR tranz_acct LIKE '%34534535%';
Можно попробовать механизм регулярок 

SELECT ....... WHERE REGEXP_LIKE(tranz_acct , '.*(99449872|23424232).*')

но сравни производительность в обоих случаях. Обычно регулярки не могут использовать индекс.
Поэтому будет FULL_TABLE_SCAN. В случае с like выражениями у тебя есть шанс пойти
в план с INDEX_SCAN но нужно пересмотреть саму задачу. Откуда цифры.
И можно ли во всех кейсах выделить общий префикс например.
Похожие вопросы