Подтвердить что ты не робот

Как регулярное выражение в запросе MySQL

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

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[d]%')

и

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA[0-9]%')

Но оба запроса всегда возвращают запись null

trecord
-------
null

Где, как если бы я выполнил следующий запрос

SELECT trecord FROM `tbl` WHERE (trecord LIKE 'ALA%')

он возвращает

trecord
-------
ALA0000
ALA0001
ALA0002

Это означает, что у меня есть записи, которые начинаются с ALA и цифры после нее,

ИЗМЕНИТЬ

Я делаю это с использованием PHP MySQL и механизма innodb, чтобы быть конкретным.

4b9b3361

Ответ 1

Я думаю, вы можете использовать REGEXP вместо LIKE

SELECT trecord FROM `tbl` WHERE (trecord REGEXP '^ALA[0-9]')

Ответ 2

В моем случае (Oracle), он WHERE REGEXP_LIKE(column, 'regex.*'). См. здесь:

Функция SQL

Описание


REGEXP_LIKE

Эта функция выполняет поиск столбца символов для шаблона. Использовать это функции в предложении WHERE запроса, чтобы возвращать строки, соответствующие которое вы указываете.

...

REGEXP_REPLACE

Эта функция выполняет поиск шаблона в столбце символов и заменяет каждое вхождение этого шаблона заданным вами шаблоном.

...

REGEXP_INSTR

Эта функция выполняет поиск строки для данного случая регулярного выражение. Вы указываете, какое событие вы хотите найти и начальную позицию для поиска. Эта функция возвращает целое число указывая позицию в строке, где найдено совпадение.

...

REGEXP_SUBSTR

Эта функция возвращает фактическую подстроку, соответствующую регулярному который вы указываете.

(Конечно, REGEXP_LIKE соответствует только строкам , содержащим строку поиска, поэтому, если вы хотите получить полное совпадение, вам нужно использовать '^$' для начала (^) и завершить ($), например: '^regex.*$'.)

Ответ 3

Я бы предложил

[[:alpha:]]+[[:digit:]]{1}