Mam następującą sytuację. Muszę podciągać wyrażenie regularne z opisu używając MySQL. Opis:
Lorem D9801 ipsum dolor sit amet
Gdzie D9801 to REGEXP. Każdy silny opis tekstowy ma inną treść, ale moje wyrażenie regularne powinno wyglądać następująco: REGEXP „D [[: digit:]] {4}”
REGEXP zawsze ma „D” na początku, a „xxxx” - 4 cyfry na końcu: Dxxxx
Wiem, że REGEXP zwraca tylko wartość prawda / fałsz, ale jak mogę wykonać zapytanie, aby zwrócić tylko wartość „D9801”?
Próbowałem czegoś takiego:
SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5)
FROM (
SELECT "Lorem D9801 ipsum dolor sit amet" AS description
) temp
Wiem, że to źle, więc próbuję z tym:
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;
Ale jak znaleźć pozycję wyrażenia regularnego?
Słyszałem o UDF, ale nie mogę go używać, korzystam z hostingu OVH.