다음과 같은 상황이 있습니다. MySQL을 사용하여 설명에서 정규 표현식을 부분 문자열로 묶어야합니다. 기술:
Lorem D9801 ipsum dolor 앉은 자세
여기서 D9801은 REGEXP입니다. 강력한 텍스트 설명 마다 내용이 다르지만 정규 표현식은 다음과 같아야합니다. REGEXP 'D [[: digit :]] {4}'
REGEXP의 시작 부분에는 항상 "D"가 있고 끝에는 "xxxx"-4 자리가 있습니다 : Dxxxx
REGEXP는 true / false 값만 반환하지만 어떻게 'D9801'값만 반환하도록 쿼리를 만들 수 있습니까?
나는 이와 같은 것을 시도했다 :
SELECT SUBSTRING (description, LOCATE(REGEXP 'D[[:digit:]]{4}', description), 5)
FROM (
SELECT "Lorem D9801 ipsum dolor sit amet" AS description
) temp
나는 그것이 틀렸다는 것을 알고 있으므로 다음과 같이 시도하십시오.
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;
그러나 정규 표현식의 위치를 찾는 방법은 무엇입니까?
UDF에 대해 들었지만 사용할 수 없으며 OVH 호스팅을 사용합니다.