Tengo la siguiente situación. Tengo que subcadenar la expresión regular de la descripción usando MySQL. Descripción:
Lorem D9801 ipsum dolor sit amet
Donde D9801 es REGEXP. Cada descripción de texto fuerte tiene contenido diferente, pero mi expresión regular debería verse así: REGEXP 'D [[: digit:]] {4}'
REGEXP siempre tiene "D" al principio y "xxxx" - 4 dígitos al final: Dxxxx
Sé que REGEXP devuelve solo el valor verdadero / falso, pero ¿cómo puedo hacer que la consulta devuelva solo el valor 'D9801'?
Intenté algo como esto:
SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5)
FROM (
SELECT "Lorem D9801 ipsum dolor sit amet" AS description
) temp
Sé que está mal, así que trato con esto:
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;
Pero, ¿cómo encontrar la posición de regexp?
Escuché sobre UDF pero no puedo usarlo, uso el alojamiento OVH.