如何在mysql数据库中替换逗号分隔数组

时间:2017-08-06 12:46:03

标签: php mysql arrays

我想知道如何将逗号分隔的数组替换为mysql数据库中另一个逗号分隔的数组。有任何方法可以替换而不从数据库中获取值只插入方法。

示例:

XY列以逗号分隔的数组:1,3,2,6,3,4我想将此3,2,6值更改为5,8,9。最后数组应该是1,5,8,9,3,4在数据库中。

我想在没有从mysql数据库获取数据的情况下也没有提供私有值,这意味着没有给出3,2,6。这意味着从数组的第二个值更新此数组。如果不可能,请给我另一种可能的方法。

2 个答案:

答案 0 :(得分:0)

当然,就数据库而言,逗号分隔的数组只是文本字符串。因此,您可以执行此操作以进行所需的更改。

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

一般来说,将逗号分隔值放在单个SQL列中会使以任何SQL友好的方式更新这些列或搜索值变得很困难。

答案 1 :(得分:0)

不幸的是,MySQL没有REGEXP_REPLACE函数之类的功能,因此操纵包含逗号分隔列表的字符串非常简单。

对于您的特定情况,您可以使用此:

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

分别用<SRC><DST>替换3,2,65,8,9,您将获得理想的结果。