我正在努力解决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之前是否还有其他字符。