【发布时间】: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 表中的一个字段中替换多个单词。我一直在使用多个步骤:
update table1 set fld1=replace(fld1,'and', '');
update table1 set fld1=replace(fld1,'or', '');
update table1 set fld1=replace(fld1,'xor', '');
...
如何一步一步完成?
【问题讨论】:
丑陋的方式...
UPDATE table1 SET fld1 = replace(replace(replace(fld1, 'and', ''), 'xor', ''), 'or', '')
请注意,如果您在“xor”之前替换“or”,它将匹配“xor”的一部分并留下x,因此顺序很重要。
【讨论】:
replace(fld1, ' or ' , ' ') 这样你就不会匹配 oral 和 orb
您可以编写replace 电话:
update table1
set fld1 = replace(replace(replace(fld1, 'xor', ''), 'or', ''), 'and', '');
我认为这是您在 MySQL 中可以做到的最好的事情,而无需编译额外的用户定义函数。 PostgreSQL 和 (AFAIK) Oracle 具有完整的正则表达式支持,但 MySQL 仅支持正则表达式匹配。
如果您必须做很多此类事情,那么您可能希望在数据库之外进行,以获得不涉及嵌套replace 函数的疯狂级别的合理解决方案。
【讨论】: