我想知道如何将逗号分隔的数组替换为mysql数据库中另一个逗号分隔的数组。有任何方法可以替换而不从数据库中获取值只插入方法。
示例:
X
表Y
列以逗号分隔的数组:1,3,2,6,3,4
我想将此3,2,6
值更改为5,8,9
。最后数组应该是1,5,8,9,3,4
在数据库中。
我想在没有从mysql数据库获取数据的情况下也没有提供私有值,这意味着没有给出3,2,6
。这意味着从数组的第二个值更新此数组。如果不可能,请给我另一种可能的方法。
答案 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,6
和5,8,9
,您将获得理想的结果。