我有以下情况。我必须使用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
我知道这是错误的,因此我尝试使用此方法:
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托管。
这基本上是一个DUP:stackoverflow.com/questions/4021507/...
—
弥敦道Feger
如果不使用UDF,则没有内置功能可以从REGEXP函数中检索匹配的模式,而其他匹配方法则依赖于知道您要匹配的完整字符串,在这种情况下,该字符串不起作用
—
有效负载