#mysql #sql #regex
#mysql #sql #регулярное выражение
Вопрос:
Я хочу проверить, существует ли известный шаблон с переменными числами.
Этот столбец ‘shortcut’ имеет значения, подобные этому
|shortcuts|
-----------
|ab1
|ab2
|ab23
|abc123
Единственное, что у меня есть для моего SQL-оператора, — это алфавитный шаблон, например, ‘ab’
Итак, я начал с
SELECT * FROM mytable WHERE shortcut LIKE 'ab%'
Мне нужны только ab1, ab2 и ab23, а НЕ abc12.
Есть ли способ изменить мое утверждение? Существует по крайней мере одно число, числа всегда следуют известному шаблону, и шаблон является единственным известным значением.
Комментарии:
1. Извините, означает ли это, что вы хотите также возвращать записи типа
ab12 some text here
?
Ответ №1:
Вы можете использовать регулярные выражения:
where shortcut regexp '^ab[0-9] '
Здесь говорится, что shortcut
начинается с «ab» и за ним следует по крайней мере одна цифра.
Комментарии:
1. Большое вам спасибо, это утверждение сделало именно то, что мне было нужно.
Ответ №2:
Вы можете использовать
SELECT * FROM mytable WHERE shortcut REGEXP '^ab[0-9] $'
^ab[0-9] $
Регулярное выражение (см. его онлайн-демонстрацию) соответствует:
^
— начало строкиab
—ab
строка (без учета регистра, используйтеBINARY
послеREGEXP
, чтобы сделать ее чувствительной к регистру)[0-9]
— одна или несколько цифр$
— конец строки.
Посмотрите на этот график регулярных выражений: