Как заменить несколько ключей в MySQL - PullRequest
2 голосов
/ 04 мая 2011

Я хотел бы заменить несколько слов из поля в таблице MySQL. Я делал это, используя несколько шагов:

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

Как мне сделать один шаг?

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

Гадкий путь ...

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

Обратите внимание, что если вы замените 'или' перед 'xor', оно будет соответствовать части 'xor' и оставит x, поэтому порядок важен.

1 голос
/ 04 мая 2011

Вы можете составить replace вызовы:

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

Я думаю, что это лучшее, что вы можете сделать в MySQL без компиляции дополнительных пользовательских функций.PostgreSQL и (AFAIK) Oracle имеют полную поддержку регулярных выражений, но MySQL поддерживает только сопоставление регулярных выражений.

Если вам приходится делать много такого рода вещей, то вы можете захотеть сделать это вне базы данных, чтобы получить разумное решениеэто не включает безумные уровни вложенных replace функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...