1

再次提前感谢这个。

我有一个表,其中包含一个地址记录,我试图将其分解为各个部分。不幸的是,我收到的数据在各个条目中输入的不一致,但我相信有一个一致的元素可以用来清理。

我基本上想在列出省(AB,SK)之后(包括)之后从 MailingAddress 列中删除所有人:

表:联系信息

邮寄地址:1234 Something Street, AB A1B 2C4

会成为

邮寄地址:东西街 1234 号,

我不想删除“,”,因为它用于很多街道地址信息。我可能必须运行两次查询,因为我还想删除该省以“SK”开头的条目。

你们非常乐于助人,我非常感谢您的帮助。

4

2 回答 2

1

如果你能分开,那可能是最好的。你可以这样做:

UPDATE contactinfo
SET MailingAddress = CONCAT(SUBSTRING_INDEX(MailingAddress, ',', 1), ',')

请注意,我添加了尾随逗号,但我不清楚您为什么需要它。如果你真的不需要它,只需删除包装CONCAT功能。

如果您需要根据省代码删除,您可以这样做

UPDATE contactinfo
SET MailingAddress = TRIM(SUBSTRING_INDEX(MailingAddress, 'AB', 1));
UPDATE contactinfo
SET MailingAddress = TRIM(SUBSTRING_INDEX(MailingAddress, 'SK', 1));

请注意,您必须在 MailingAddress 字段上设置区分大小写的排序规则,这样才能使上述操作生效,否则查询将无法区分ABabAbaB. 显然那里可能有许多地址,ab因此这确实会导致更新数据时出现问题。

当然,在您做任何事情之前,请备份您的表格。

于 2012-12-14T17:11:29.927 回答
-1

删除 MailingAddress 列中包含省名 SK 或 AB 的记录:

delete from contactinfo where MailingAddress like '%, SK%' 
or MailingAddress like '%, AB%'
于 2012-12-14T17:05:01.413 回答