2017-08-06 337 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