MySQL 8中的REGEXP_REPLACE问题

时间:2018-04-23 18:56:55

标签: mysql regex mariadb regexp-replace

我最近升级到了MySQL 8,这样我就可以使用新的正则表达式函数(https://dev.mysql.com/doc/refman/8.0/en/regexp.html)来清理大量的错误地址。但是,我使用REGEXP_REPLACE遇到了麻烦。

我首先运行SELECT查询作为示例(因此我可以看到在运行UPDATE查询之前发生了什么):

SELECT address1_raw, CONVERT(REGEXP_REPLACE (address1_raw, '^[0-9]+ ', '') 
USING UTF8) as replaced,
CONVERT(REGEXP_SUBSTR(address1_raw, '^[0-9]+ ') USING UTF8) as captured
FROM members WHERE REGEXP_LIKE (address1_raw, '^[0-9]+ ');

我正在寻找的结果是这样的:

address1_raw | replaced  | captured
54 Main St   | Main St   | 54
1089 High St | High St   | 1089
67 Broadway  | Broadway  | 67

相反,我得到了这个:

address1_raw | replaced               | captured
54 Main St   | Main St                | 54
1089 High St | Main StHigh St         | 1089
67 Broadway  | Main StHigh StBroadway | 67

我完全难过!知道这里发生了什么吗?

0 个答案:

没有答案