我最近升级到了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
我完全难过!知道这里发生了什么吗?