我有一列,其中包含以逗号分隔的ISBN列表。我想使用regxp_replace函数从字符串中提取一些信息,以替换字符串中所有出现的模式,但它只返回ISBN列表中最后匹配的模式出现。我已经使用以下MySQL查询:
SELECT regexp_replace('123-4567-8-9012-0, 123-4567-89-012-0, 123-4567-890-12-0, 123-4567-8901-2-0, 123-45678-9-012-3',
'(.*)-(.*)-(.*)-(.*)-(.*)', '\\2-\\3') prefixes;
查询返回字符串中模式的最后匹配项。
45678-9
我想要以下结果:
4567-8、4567-89、4567-890、4567-8901、45678-9
如果可以使用regexp_replace或类似的函数来获得解决方案,我将不胜感激。
谢谢。
使用此
[?^-]\d+-\d[?\d+-]
SELECT RIGHT(LEFT(prefixes,LENGTH(prefixes)-1),LENGTH(prefixes)-1)prefixes
FROM (
SELECT REGEXP_SUBSTR('123-4567-8-9012-0, 123-4567-89-012-0, 123-4567-890-12-0, 123-4567-8901-2-0, 123-45678-9-012-3','[?^-]\d+-\d[?\d+-]') prefixes
)X