Официальная возможность получить лицензионный софт бесплатно.
Giveaway of the Day
Это не реклама!

Щелкните для получения прогноза по Биробиджану


четверг, 28 марта 2019 г.

Немного о regexp в MySQL

Таблетка для памяти:

Есть служба, компы в которой могут иметь имена от cnt30150 до cnt30149z.
Шаблон для тех, кто понимает:

cnt30[0-9]{3}[0-9a-z]{1}

При этом только 3 цифры после cnt30 есть собственно номер компа, а последний знак - дополнительный индекс, который может повторяться у разных компов.

Для отбора компов вышеупомянутой службы из базы OCS Inventory используем такое регулярное выражение:

select id,name from hardware where name rlike "cnt301(3[5-9]{1}|4[0-9]{1})."

То есть, выбираем компы, имена которых начинаются с cnt301, после чего идет либо тройка, за которой должна следовать цифра от 5 до 9, либо четверка, после которой должна быть цифра от 0 до 9, и заканчивается это одним любым символом.

Дополнительно стоит заметить, что для rlike (он же - regexp) шаблон указывается в двойных кавычках, как это делается для имени поля, а не в апострофах, как обычная строка.

Конечно, можно было задать этот же диапазон как:

select id,name from hardware where name >= 'cnt301350' and name <= 'cnt30149z'

что тоже правильно, но ведь это не так красиво, а?

Комментариев нет:

Отправить комментарий

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