1

提前谢谢了。

我的表中有两列:
表:contactinfo
列:家乡,MailingAddress

列 Hometown 和 MailingAddress 包含重复的(呃!)信息,其中 Hometown 列出“城市”,MailingAddress 列出“1234 Street, City”

我想从 MailingAddress 中删除与家乡匹配的城市,以便我可以从:

家乡:城市
邮寄地址:1234 Street, City

家乡:城市
邮寄地址:1234 Street,

我不想删除“,”,因为某些 MailingAddress 条目在街道地址信息中有逗号。

再次感谢你们这些了不起的人。

4

3 回答 3

2

我会用这个:

UPDATE contactinfo
SET MailingAddress = replace(MailingAddress, CONCAT(', ', Hometown), ',')
WHERE MailingAddress LIKE CONCAT('%, ', Hometown)

这将选择所有以MailingAddress结尾的行,并仅用 a, City替换每次出现的(因此您必须确保仅在字符串末尾出现一次)。, City,, City

于 2012-12-14T18:47:59.110 回答
0

看看 MySQL 字符串函数: http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html

假设您已经确定了违规记录,您应该能够更新新的城市和地址字段(使用临时字段以免更改源数据)。你可以这样做:

UPDATE contactinfo
SET new_MailingAddress = SUBSTRING_INDEX(MailingAddress, ',' 1) 
WHERE id IN [SELECT offending records]

不是最优雅的,但应该给你一个起点。查看所有其他字符串函数,看看哪些最适合您的需求。我相信你也可以对更多有问题的数据做一些正则表达式。

祝你好运。

于 2012-12-14T18:19:00.680 回答
0

我不知道您使用的是什么脚本,但您需要先获取匹配的行,然后为每一行使用脚本中的字符串函数删除重复项,然后更新相应的行。

查询以按您的标准选择(如果我理解正确的话):

SELECT * FROM contactinfo WHERE MailingAddress LIKE CONCAT('%', Hometown)
于 2012-12-14T18:04:33.147 回答