2012-12-14 69 views
1

再次感謝此次。mySQL查詢 - 刪除記錄之後的所有內容

我有包含我試圖掰開到它各部分的地址記錄的表。不幸的是,我收到的數據並未在各條目中保持一致,但我認爲可以使用一個一致的元素來清理問題。

我基本上想擺脫從MailingAddress柱經過大家(包括)的省(AB,SK)被列爲所以基本的:

表:CONTACTINFO

MailingAddress:1234東西街,AB A1B 2C4

將成爲

MailingAddress:1234東西街,

我不不想刪除「,」因爲它在很多街道地址信息中都有使用。我可能必須運行查詢兩次,因爲我也想刪除該省開始「SK」的條目。

你們已經驚人的幫助,我真正體會到了幫助。

+0

在任何情況下,您都可以使用逗號分隔而不是省名嗎?問題是'AB'或'SK'也可能以街道名義。 –

回答

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,所以這會真正導致更新數據的問題。

當然,你做任何事情之前,讓你的表的備份。

+0

我不能告訴你們,我是多麼偉大的幫助。非常感謝。像魅力一樣工作(幸好各省都是大寫的!) – Benshack

-1

要刪除包含在MailingAddress列全省名SK型或AB型的記錄:

delete from contactinfo where MailingAddress like '%, SK%' 
or MailingAddress like '%, AB%' 
+0

他不想刪除記錄,他想更新它們。 –

+0

這是正確的:) – Benshack