Нормализация поля с использованием одного UPDATE в MySQL - PullRequest
0 голосов
/ 22 марта 2012

Есть ли способ выполнить обновление для нормализации поля с помощью одного запроса?

Пример:

UPDATE person SET name = REPLACE(name, 'á', 'a');
UPDATE person SET name = REPLACE(name, 'é', 'e');
UPDATE person SET name = REPLACE(name, 'í', 'i');
UPDATE person SET name = REPLACE(name, 'ó', 'o');
UPDATE person SET name = REPLACE(name, 'ú', 'u');

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Вы можете связать вызовы замены, так что это можно сделать одним запросом:

UPDATE person SET name = REPLACE(REPLACE(REPLACE(name, 'á', 'a'), 'é', 'e'), 'í', 'i')

Но это быстро становится неразрешимым беспорядком. Если вы просто пытаетесь заменить акцентированные символы их безударными эквивалентами, возможно, изменение набора символов будет более полезным.

0 голосов
/ 23 марта 2012

Замените вот так, о котором вы все говорите, станьте беспорядком, если хотите заменить все алфавиты. Вы можете сделать одну таблицу с двумя столбцами, например, 1-й столбец состоит из 'á', а второй 'a' аналогично для целого. а затем выполните процедуру извлечения каждой строки новой таблицы, а затем выполните замену.

...