1

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

4

2 回答 2

1

你可以使用这样的东西:

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

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

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

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

看到它在这里工作。

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

于 2013-01-29T15:24:05.063 回答
0
update table set col=replace ( col, '3','')

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

于 2013-01-29T15:04:22.007 回答