Ich habe folgende Situation. Ich muss reguläre Ausdrücke aus der Beschreibung mit MySQL ableiten. Beschreibung:
Lorem D9801 ipsum dolor sitzen amet
Wobei D9801 REGEXP ist. Jede Beschreibung mit starkem Text hat einen anderen Inhalt, aber mein regulärer Ausdruck sollte so aussehen: REGEXP 'D [[: digit:]] {4}'
REGEXP hat immer "D" am Anfang und "xxxx" - 4 Ziffern am Ende: Dxxxx
Ich weiß, dass REGEXP nur den Wert true / false zurückgibt, aber wie kann ich abfragen, ob nur der Wert 'D9801' zurückgegeben wird?
Ich habe so etwas ausprobiert:
SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5)
FROM (
SELECT "Lorem D9801 ipsum dolor sit amet" AS description
) temp
Ich weiß, dass es falsch ist, also versuche ich Folgendes:
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;
Aber wie finde ich die Position von RegExp?
Ich habe von UDF gehört, kann es aber nicht verwenden. Ich verwende OVH-Hosting.