非常感谢提前。
我的桌子上有两列:
表:contactinfo
专栏:Hometown,MailingAddress
Columns Hometown和MailingAddress包含重复(ugh!)信息,其中Hometown列出“city”,MailingAddress列出“1234 Street,City”
我想从MailingAddress中删除该城市,只要它与Hometown匹配,以便我可以从:
家乡:城市 邮寄地址:1234 Street,City
到
家乡:城市 邮寄地址:1234 Street,
我不想删除“,”因为某些MailingAddress条目在街道地址信息中有逗号。
再一次,非常感谢你们。
答案 0 :(得分:2)
我会用这个:
UPDATE contactinfo
SET MailingAddress = replace(MailingAddress, CONCAT(', ', Hometown), ',')
WHERE MailingAddress LIKE CONCAT('%, ', Hometown)
这将选择MailingAddress
以, City
结尾的所有行,并用, City
替换,
的每个出现(因此您必须确保{ {1}}只出现一次,在字符串的末尾。)
答案 1 :(得分:0)
我不知道您使用的是哪个脚本但是您需要先获取匹配的行,然后对每一行使用脚本中的字符串函数来删除重复项,然后更新相应的行。
查询按您的标准选择(如果我理解正确的话):
SELECT * FROM contactinfo WHERE MailingAddress LIKE CONCAT('%', Hometown)
答案 2 :(得分:0)
看看MySQL String函数: 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]
不是最优雅但应该给你一个起点。查看所有其他字符串函数,看看哪些最符合您的需求。我相信你也可以为更有问题的数据做一些正则表达式。
祝你好运。