Mysql регулярное выражение с цифрой - PullRequest
0 голосов
/ 18 января 2020

Как бы я сделал следующее в mysql?

SELECT * FROM table WHERE search REGEXP '.+season\d+\s?.+' limit 10;

Я хочу сопоставить что-то вроде:

"hello this is season1 how are you?"

Но не:

"hello this is season1episode1 how are you?

Ответы [ 2 ]

2 голосов
/ 18 января 2020

Вы можете использовать следующее регулярное выражение, поскольку \d и \s недоступны в MySQL. Вместо этого вы можете использовать классы символов .

Вы можете заменить \d на [[:digit:]] или [0-9] и \s на [[= =]] или [ ].

SELECT * FROM table WHERE search REGEXP '.+season[[:digit:]]+[[= =]].+' LIMIT 10

-- or...
SELECT * FROM table WHERE search REGEXP '.+season[0-9]+[ ].+' LIMIT 10

Демонстрация включена dbfiddle.uk

0 голосов
/ 18 января 2020

До MySQL 8.0,

REGEXP "season[0-9]+[[:>:]]"

означает «сезон», по крайней мере, один ди git, затем слово границы. Обратите внимание, что он остановится с пунктуацией.

REGEXP "season[0-9]+[^a-zA-Z]"

Может сработать для вас - он говорит, что за ним должна следовать буква.

8.0 изменяет границу слова на:

REGEXP "season[0-9]+\b"

(Предостережение: обратная коса sh может потребоваться удвоить.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...