Замените несколько символов, используя MySQL - PullRequest
0 голосов
/ 07 мая 2019

Я использую этот фрагмент кода для замены символов в одном столбце моей базы данных.

UPDATE items 
SET items = REPLACE(items, 'ḇ','ḇ')

Но теперь у меня есть список с почти 500 символами для замены. Просто написать всю последовательность строк в одном запросе не будет работать.

UPDATE items 
SET items = REPLACE(items, 'ḇ','ḇ')
SET items = REPLACE(items, '&#x1E0x;','x')
SET items = REPLACE(items, '&#x1E0y;','y')
ETC. 

Или я не знаю, как это написать. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 07 мая 2019

Создать таблицу со строкой поиска и строкой замены в качестве столбцов.Добавьте все 500 строк того, что нужно заменить.Затем напишите хранимую процедуру, которая будет искать значение замены из таблицы поиска и заменять его значением.Таблица поиска может быть легко загружена в MySql из файла Excel или csv.

Вот псевдокод, показывающий циклы и поиск.Я знаю, что это не скомпилируется, я немного заржавел по синтаксису MySql.Я обычно работаю в Oracle, поэтому синтаксис псевдокода более Oracle-esque.

DECLARE
v_old_string varchar;
v_new_string varchar;
BEGIN
FOR v IN (SELECT * FROM items) LOOP
   SELECT old_string, new_string
     INTO v_old_string, v_new_string
     FROM my_lookup_table
    WHERE old_string = v.thestringcolumn;

   UPDATE items
      SET itemcolumn = REPLACE(itemcolumn, v_old_string, v_new_string)
    WHERE itemcolumn = v_old_string;
END LOOP;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...