在MySQL中更新分隔的字符串值

时间:2013-01-29 15:01:05

标签: mysql

假设我的列值为'1|2|3|4|5'。这些值是数组的字符串表示形式,我想删除字符串中的单个值(按整数),从而得到'1|2|4|5'。鉴于要删除的整数可以在字符串中的任何位置,MySQL中最有效的方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

UPDATE yourtable
SET col = TRIM(BOTH '|' FROM REPLACE(
            REPLACE(
              CONCAT('|',REPLACE(col, '|', '||'), '|'),
              '|3|', '')
            , '||', '|')
          )

在此,我将每个|加倍到||,然后在开头添加|,在结尾添加一个|。这样,每个元素在开始时都有自己的|,在结尾有|3|

现在我们可以安全地用空字符串替换||

我们现在需要将双|转换回|,并修剪字符串以最终删除开头的|和结尾的||

看到它正常工作here

如果您确定元素3不能多次出现,则可以跳过|3|加倍|,并且必须将{{1}}替换为{{1}}。其余的都一样。

答案 1 :(得分:0)

update table set col=replace ( col, '3','')

这将对列进行区分大小写搜索。如果它是一个巨大的表,在这个列上有一个索引。结果将相当快。