假设我的列值为'1|2|3|4|5'
。这些值是数组的字符串表示形式,我想删除字符串中的单个值(按整数),从而得到'1|2|4|5'
。鉴于要删除的整数可以在字符串中的任何位置,MySQL中最有效的方法是什么?
答案 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','')
这将对列进行区分大小写搜索。如果它是一个巨大的表,在这个列上有一个索引。结果将相当快。