DB2 LIKE соответствующий шаблон - PullRequest
0 голосов
/ 30 августа 2018

Мой вопрос прост.

В базе данных DB2 у меня есть таблица

Table (Id integer, name varchar)

Я хочу выбрать записи с именами, такими как «ac1%» или «ac2%» или «ac3%», чтобы имена соответствовали регулярному выражению

'^ac[123]*' 

Есть ли способ получить этот запрос выбора без записи:

WHERE name LIKE 'ac1%' OR name LIKE 'ac2%' OR name LIKE 'ac2%'

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

В зависимости от вашей платформы Db2-сервера (Z / OS, i-Series, Linux / Unix / Windows) и версии Db2, вы можете использовать функцию REGEXP_LIKE . Это позволяет использовать регулярные выражения в SQL.

См. Документацию и примеры здесь .

0 голосов
/ 30 августа 2018

Я думаю, что ниже будет работать, потому что REGEXP_LIKE(col,'[0-9]{3}-[0-9]{3}-[0-9]{2}') всегда будет возвращать true, если col содержит любое из значений от 0 до 9

  SELECT * FROM table1 
   WHERE  REGEXP_LIKE(name,'[1-3]')
0 голосов
/ 30 августа 2018

Наверное, самый эффективный метод:

where name >= 'ac1' and
      name < 'ac4'

Вы также можете использовать регулярные выражения :

where regexp_like(name, '^ac[1-3]')
...