【问题标题】:How do i replace multiple keys in mysql如何替换mysql中的多个键
【发布时间】:2011-08-18 07:52:38
【问题描述】:

我想从 mysql 表中的一个字段中替换多个单词。我一直在使用多个步骤:

update table1 set fld1=replace(fld1,'and', '');
update table1 set fld1=replace(fld1,'or', '');
update table1 set fld1=replace(fld1,'xor', '');
...

如何一步一步完成?

【问题讨论】:

标签: mysql string replace


【解决方案1】:

丑陋的方式...

UPDATE table1 SET fld1 = replace(replace(replace(fld1, 'and', ''), 'xor', ''), 'or', '')

请注意,如果您在“xor”之前替换“or”,它将匹配“xor”的一部分并留下x,因此顺序很重要。

【讨论】:

  • 万无一失的是用空格包围单词 replace(fld1, ' or ' , ' ') 这样你就不会匹配 oralorb
  • @KoolKabin 我不知道有什么更好的方法。 :D
【解决方案2】:

您可以编写replace 电话:

update table1
set fld1 = replace(replace(replace(fld1, 'xor', ''), 'or', ''), 'and', '');

我认为这是您在 MySQL 中可以做到的最好的事情,而无需编译额外的用户定义函数。 PostgreSQL 和 (AFAIK) Oracle 具有完整的正则表达式支持,但 MySQL 仅支持正则表达式匹配。

如果您必须做很多此类事情,那么您可能希望在数据库之外进行,以获得不涉及嵌套replace 函数的疯狂级别的合理解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-16
    • 2023-03-15
    • 2022-01-03
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多