2013-02-26 22 views
0

有沒有辦法獲得像這樣的值:「300,400,500,300」檢查每個以逗號分隔的數字,如果它被加倍,則將其刪除。所以價值將如下所示:「300,400,500」。檢查用逗號分隔的值中加倍的條目?

我可以在PHP腳本中做到這一點,但我只是想知道是否可以使用MySQL。

+2

在MySQL?爲什麼要將逗號分隔值列表保存爲表中的一個字段?如果可能的話,你應該創建一個新表來保存這些表,每行一個值。 – mbeckish 2013-02-26 14:38:55

+1

可能,但用php腳本做起來會更容易也更安全 – Kickstart 2013-02-26 14:39:18

+0

逗號就是這個','昏迷是人們在沒有死的時候進入的東西。 – JakeParis 2013-02-26 14:39:54

回答

0

創建一個具有唯一索引的臨時表,插入忽略重複錯誤的值,從臨時表中選擇所有記錄,刪除表。

+0

您能否提供一些示例如何從該字符串中獲取每個數字100,300,500,500檢查它是否加倍並且是否將其刪除?用MySQL當然。 – 2013-02-26 14:44:57

0

快速播放,但要獲得唯一值,你可以使用類似這樣

SELECT Id, GROUP_CONCAT(DISTINCT aWord ORDER BY aWord ASC) 
FROM (SomeTable.Id, SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(concat(SomeColumn, ','), ' ', aCnt), ',', -1) AS aWord 
FROM SomeTable 
CROSS JOIN (
SELECT a.i+b.i*10+c.i*100 + 1 AS aCnt 
FROM integers a, integers b, integers c) Sub1 
WHERE (LENGTH(SomeColumn) + 1 - LENGTH(REPLACE(SomeColumn, ',', ''))) >= aCnt) Sub2 
GROUP BY ID 

這依賴於具有10行叫我用值0的單個列的表稱爲整數每一行它可以應付多達1000個字,但可以很容易地被修改以應對更多

可能最容易使用INSERT/ON DUPLICATE KEY UPDATE來使用它來使值唯一。

+0

Thx。我會看看 :) – 2013-02-26 14:47:55