我如何在mysql中替换多个键

时间:2011-05-04 07:55:46

标签: mysql string replace

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

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

我如何单步执行?

2 个答案:

答案 0 :(得分:4)

丑陋的方式......

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

请注意,如果在'xor'之前替换'或',它将匹配'xor'的一部分并保留x,因此顺序很重要。

答案 1 :(得分:1)

您可以撰写replace来电:

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

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

如果你必须做很多这类事情,那么你可能想在数据库之外做这件事,以获得一个不涉及疯狂级别的嵌套replace函数的合理解决方案。