如果“MEXICO”在其他字符之后显示为子字符串,则保留字符串的一部分

时间:2017-05-15 14:52:44

标签: postgresql-9.3 regexp-replace

我正在努力解决PostgreSQL中的以下问题:我有一个来自墨西哥的巨大地址列表。

我希望删除“墨西哥”这个词,只要它出现在城市名称中,而不是指墨西哥城,而是指整个国家,例如: “城市名称,墨西哥”。

SELECT city_, zip_code, 
       regexp_replace(city_, '\s+\mMEXICO\M', '', 'g') 
from addresses

不起作用,因为MEXICO CITY的条目将被删除。 通常,国家墨西哥出现在一些其他角色和空白之后。

SELECT city_, zip_code, 
       regexp_replace(city_, '[A-Z]+\s+\mMEXICO\M', '', 'g') 
from addresses

也不起作用,因为整个字符串都会被删除。

因此,我正在寻找一个选项,以便将[A-Z]+\s+\mMEXICO\M替换为[A-Z]+\s+

为了使事情变得复杂,墨西哥城经常不会出现像墨西哥城,而是像“墨西哥邮政编码”那样。

因此,我认为识别要删除的MEXICO的唯一方法是在MEXICO之前是否还有其他字符。

0 个答案:

没有答案