У мене така ситуація. Мені доводиться підстроковувати регулярний вираз з опису за допомогою MySQL. Опис:
Lorem D9801 ipsum dolor sit amet
Де D9801 - REGEXP. Кожен сильний текстовий опис має різний зміст, але мій регулярний вираз повинен виглядати так: REGEXP 'D [[: digit:]] {4}'
REGEXP завжди має "D" на початку та "xxxx" - 4 цифри в кінці: Dxxxx
Я знаю, що REGEXP повертає лише справжнє / хибне значення, але як я можу зробити запит, щоб повернути лише значення "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;
Але як знайти позицію regexp?
Я чув про UDF, але не можу ним користуватися, я використовую OVH хостинг.