Как можно задать несколько условий для оператора 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%';
Можно попробовать <b>механизм регулярок</b> <br/> <br/> <pre><code class="sql">SELECT ....... WHERE REGEXP_LIKE(tranz_acct , '.*(99449872|23424232).*')</code></pre> <br/> но сравни <b>производительность </b> в обоих случаях. Обычно регулярки не могут использовать индекс. <br/> Поэтому будет FULL_TABLE_SCAN. В случае с like выражениями у тебя есть шанс пойти <br/> в план с <b>INDEX_SCAN </b> но нужно пересмотреть саму задачу. Откуда цифры. <br/> И можно ли во всех кейсах выделить <b>общий префикс например.</b>
Похожие вопросы