У меня следующая ситуация. Я должен подстроки регулярное выражение из описания, используя MySQL. Описание:
Lorem D9801 Ipsum Долор Сит Амет
Где D9801 - это REGEXP. Каждое сильное текстовое описание имеет различное содержание, но мое регулярное выражение должно выглядеть так: REGEXP 'D [[: digit:]] {4}'
У REGEXP всегда есть «D» в начале и «xxxx» - 4 цифры в конце: Dxxxx
Я знаю, что REGEXP возвращает только значение true / false, но как мне сделать запрос, чтобы вернуть только значение 'D9801'?
Я попробовал что-то вроде этого:
SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5)
FROM (
SELECT "Lorem D9801 ipsum dolor sit amet" AS description
) temp
Я знаю, что это неправильно, поэтому я пытаюсь с этим:
SELECT
id,
SUM(description REGEXP 'D[[:digit:]]{4}') AS matches,
CASE
WHEN (SUM(description REGEXP 'D[[:digit:]]{4}') > 0) THEN
SUBSTRING(description, LOCATE( /*POSITION_OF_REGEXP_IN_DESC*/ , description), 5)
ELSE 'Brak schematu'
END AS show_substr FROM ps_description GROUP BY id;
Но как найти положение регулярного выражения?
Я слышал о UDF, но не могу его использовать, я использую хостинг OVH.
mysql
regular-expression
Марек Анджеяк
источник
источник
Ответы:
Для этого потребуется использовать
LOCATE
иSUBSTRING
синтаксис , чтобы получить информацию из строки. Базовый синтаксис поиска, который вам нужен, объясняется здесь .LOCATE (поиск str, str, [position])
В то время как функция подстроки вам нужна, здесь объясняется
ПОДПИСЬ (str, pos, len)
Более простой способ просмотра этого - думать о подстроке как о следующей ПОДПИСИ (str FROM pos FOR len)
Синтаксис, который я использовал для получения второго слова, приведен ниже, я воспользовался пробелами, которые постоянно находятся вокруг второго слова, которое вы пытаетесь извлечь.
источник
К сожалению, функция регулярного выражения MySQL возвращает true, false или null в зависимости от того, существует выражение или нет.
Хитрость в реализации желаемого поведения состоит в том, чтобы определить, какая подстрока начинается с символа, который вам небезразличен, имеет правильную длину и сопровождается числом. Ряд функций substring_index используется для извлечения строки ...
источник