mysql正则表达式vs多个替换?

时间:2012-10-25 06:55:32

标签: mysql regex search replace

正则表达式不可用于替换,但多次替换的行为与正则表达式相同

UPDATE `usertree` SET branchIndex=REPLACE(branchIndex,'80',''),
branchIndex=REPLACE(branchIndex,',,',',') WHERE id=1

它的成功运作,它有缺点吗?我以后遇到了麻烦

我的新树游戏附带了大量技术:

我在列名branchIndex中保存了添加的分支,它是一个逗号分隔的字符串,在树上保存分支位置。

但是当用户剪切分支时,我需要从字符串中删除该索引,并保持字符串准确。此外,2000至3000名用户也会更频繁地发生这种情况。

2 个答案:

答案 0 :(得分:1)

如果要在同一列上进行多次替换,则应将其写为:

SET branchIndex = REPLACE(REPLACE(branchIndex, '80', ''), ',,', ',')

但是不是以逗号分隔的字符串,而是将分支放入单独的表中可能会更好。然后,您只需添加和删除表中的行。

答案 1 :(得分:0)

这些步骤可以在一次运行中完成,打破更清晰的视图:

SELECT REPLACE(CONCAT(',','80,138,149,145,120,180,280',','), ',80,', ',');

最好保持这样:

SELECT TRIM(BOTH ',' FROM REPLACE(CONCAT(',','80,138,149,145,120,180,280',','), ',80,', ','));