2017-08-06 74 views
-2

我想知道如何將我的逗號分隔數組替換爲另一個在mysql數據庫中逗號分隔的數組。有任何方法來替換而不從數據庫中僅獲取值插入方法。如何在mysql數據庫中替換逗號分隔數組

實施例:

XY列有此逗號分隔陣列:1,3,2,6,3,4我想改變這個3,2,65,8,9。最後在數據庫中數組應該是1,5,8,9,3,4

我想要它沒有從mysql數據庫獲取數據,也沒有給予privies值,這意味着沒有給予3,2,6。這意味着從數組的第二個值更新這個數組。如果這是不可能的,請給我另一種可能的方法。

+2

聽起來像一個糟糕的設計模式。存儲逗號分隔值通常是一個壞主意。 – Qirel

+0

你會建議 – ind

+0

https://stackoverflow.com/q/3653462/4535200 – Qirel

回答

0

當然,就數據庫而言,逗號分隔數組只是文本字符串。所以你可以做這個來做出你想要的改變。

UPDATE X SET Y = REPLACE(Y,'3,2,6','5,8,9') WHERE Y = '1,3,2,6,3,4' 

一般來說,把逗號分隔值在單個SQL列使得它很難更新那些列,或搜索值,在任何SQL友好的方式。

+0

但這段代碼也想得到Y值。「Y ='1,3,2,6,3,4'」 – ind

0

不幸的是,MySQL沒有像REGEXP_REPLACE這樣的函數,所以處理包含逗號分隔列表的字符串是一個相當棘手的任務。

您的特定情況下,你可以使用這個:

UPDATE X SET Y = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', Y, ','), ',<SRC>,', ',<DST>,') ) WHERE ...;

分別更換<SRC><DST>3,2,65,8,9,你會得到期望的結果。

+0

please give我爲此更新代碼。不使用3,2,6。如何給第二個數值的更新 – ind

+0

我不知道我理解你的問題 – Styx

相關問題