我有以下情况。我必须使用 MySQL 从描述中子字符串正则表达式。描述:
Lorem D9801 ipsum dolor 坐 amet
其中 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
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的,所以我尝试这样做:
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; …
Run Code Online (Sandbox Code Playgroud)