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.
mysql
regular-expression
Marek Andrzejak
źródło
źródło
Odpowiedzi:
Musi to użyć składni
LOCATE
i,SUBSTRING
aby uzyskać informacje z ciągu. Podstawowa składnia lokalizacji, której potrzebujesz, została wyjaśniona tutaj .LOCATE (szukaj str, str, [pozycja])
Chociaż funkcja podciągania, której potrzebujesz, jest wyjaśniona tutaj
SUBSTRING (str, pos, len)
Najłatwiejszym sposobem przeglądania tego jest myślenie o podciągu jako o następującym SUBSTRINGU (str FROM pos FOR len)
Sytax, którego użyłem, aby uzyskać drugie słowo, jest poniżej. Wykorzystałem spacje, które są stale wokół drugiego słowa, które próbujesz wyodrębnić.
źródło
Niestety funkcja wyrażeń regularnych MySQL zwraca true, false lub null w zależności od tego, czy wyrażenie istnieje, czy nie.
Sztuczka w realizacji pożądanego zachowania polega na określeniu, który podciąg zaczyna się od znaku, na którym ci zależy, ma prawidłową długość, a po nim następuje liczba. Szereg funkcji substring_index służy do wyodrębnienia ciągu ...
źródło