Регулярное выражение SQL, объединение известного шаблона с переменными числами

#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] — одна или несколько цифр
  • $ — конец строки.

Посмотрите на этот график регулярных выражений:

введите описание изображения здесь