如何使用MySQL的REGEXP_SUBSTR提取*分隔的地址、城市、州及邮政编码
用REGEXP_SUBSTR提取*分隔的地址各字段
你的地址文本按地址*城市*州*邮政编码*格式用*分隔,原来的正则表达式不太适配这个场景,换成分隔符定位的方式更简单直接:
提取各字段的示例代码
- 地址(第1个*分隔前的内容):
REGEXP_SUBSTR('4550 Montgomery Avenue*Toronto*Ontario*M4A 2S3*', '[^*]+', 1, 1)
返回:4550 Montgomery Avenue
- 城市(第1个和第2个*之间的内容):
REGEXP_SUBSTR('4550 Montgomery Avenue*Toronto*Ontario*M4A 2S3*', '[^*]+', 1, 2)
返回:Toronto
- 州(第2个和第3个*之间的内容):
REGEXP_SUBSTR('4550 Montgomery Avenue*Toronto*Ontario*M4A 2S3*', '[^*]+', 1, 3)
返回:Ontario
- 邮政编码(第3个和第4个*之间的内容):
REGEXP_SUBSTR('4550 Montgomery Avenue*Toronto*Ontario*M4A 2S3*', '[^*]+', 1, 4)
返回:M4A 2S3
原理说明
[^*]+表示匹配任意不含的连续字符,REGEXP_SUBSTR的第4个参数指定要提取第几个匹配的片段,这样不管每个字段里包含空格还是其他特殊字符,只要分隔符是,就能精准拿到对应位置的内容。即使部分文本末尾没有多余的*,这个写法也能正常工作。
内容的提问来源于stack exchange,提问作者Karim Ali
相关产品推荐
相关产品推荐

