Saya memiliki situasi berikut. Saya harus mengurangi ekspresi reguler dari deskripsi menggunakan MySQL. Deskripsi:
Lorem D9801 ipsum dolor sit amet
Di mana D9801 adalah REGEXP. Setiap deskripsi teks yang kuat memiliki konten yang berbeda tetapi regexp saya akan terlihat seperti: REGEXP 'D [[: digit:]] {4}'
REGEXP selalu memiliki "D" di awal dan "xxxx" - 4 digit di akhir: Dxxxx
Saya tahu REGEXP hanya mengembalikan nilai true / false, tetapi bagaimana saya bisa membuat kueri untuk mengembalikan hanya nilai 'D9801'?
Saya mencoba sesuatu seperti ini:
SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5)
FROM (
SELECT "Lorem D9801 ipsum dolor sit amet" AS description
) temp
Saya tahu itu salah, jadi saya coba dengan ini:
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;
Tetapi bagaimana cara menemukan posisi regexp?
Saya mendengar tentang UDF tetapi saya tidak dapat menggunakannya, saya menggunakan hosting OVH.