Замена n-го вхождения строки в MySQL - PullRequest
1 голос
/ 05 июня 2019

У меня есть таблица MySQL с несколькими строками и столбцами.

Я хочу заменить второе вхождение строки в определенном столбце для всех строк.

Эта строка встречается несколько раз. (До 10 раз, но я хочу заменить только второе вхождение)

1 Ответ

1 голос
/ 05 июня 2019

В MySQLv8.0 вы можете использовать REGEXP_REPLACE()

https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace

REGEXP_REPLACE (expr, pat, repl [, pos [, вхождение [, match_type]]]) *

Таким образом, если вы хотите начать поиск с позиции 1 и заменить только 2-й случай совпадения, вы можете использовать 1,2 в качестве двух последних вариантов:

UPDATE `table` SET `field`=REGEXP_REPLACE(`field`,'search_string','replacement_string',1, 2);

Примечание. Был отчет об ошибке для версии MySql: 8.0.11, который был исправлен в 8.0.12.

https://bugs.mysql.com/bug.php?id=90870

Перед использованием в производственном тесте у вас правильная версия MySql, и она работает для вас.

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