【问题标题】:mysql regex vs multiple replace?mysql正则表达式与多个替换?
【发布时间】:2012-10-15 07:37:16
【问题描述】:

正则表达式不可用于替换,但多个替换的行为与正则表达式一样

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

它工作成功,它有缺点吗?以后有麻烦了

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

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

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

【问题讨论】:

    标签: mysql regex search replace


    【解决方案1】:

    如果你想对同一列做多次替换,你应该写成:

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

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

    【讨论】:

      【解决方案2】:

      这些步骤可以一次完成,为了更清晰的视图而中断:

      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,', ','));
      

      【讨论】:

        猜你喜欢
        • 2015-02-21
        • 1970-01-01
        • 2011-03-29
        • 2011-03-10
        • 2012-02-16
        • 2019-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多