PostgreSQL regexp.replace所有不需要的字符

时间:2016-05-07 09:59:30

标签: postgresql

我的PostgreSQL表格中有注册码,如MU-321-AB,MU / 321 / AB,MU 321-AB等等...... 我需要清除所有这些以获得MU321AB。

为此,我使用以下表达式:

SELECT DISTINCT regexp_replace(ccode, '([^A-Za-z0-9])', ''), ...

此表达式在“NET'但不是在PostgreSQL中,它会清除'只有第一次出现不需要的字符。

如何修改正则表达式,它将替换字符串中所有不需要的字符,以获得仅包含字母和数字的清晰代码?

1 个答案:

答案 0 :(得分:1)

使用g lobal标志,但没有任何捕获组:

SELECT DISTINCT regexp_replace(ccode, '[^A-Za-z0-9]', '', 'g'), ...

请注意,全局标志是标准正则表达式解析器的一部分,因此在这种情况下.NET不遵循标准。此外,由于您不希望从字符串中提取任何内容 - 您只想替换某些字符 - 因此不应使用捕获组()