Как я могу заменить только первый результат в функции SQL - PullRequest
1 голос
/ 11 апреля 2020

Я спрошу о SQL функции замены.

Мне нужны ваши биты помощи. В Wordpress DB, я должен изменить небольшую часть. Я хочу заменить первый результат только в столбце. Я объясню, приведя пример:

Моя строка = "Привет XXX завтра мы XXX встретимся в XXX Дубай, вы хотите присоединиться к нам XXX ? "

Мой результат должен быть таким =" Здравствуйте MMM завтра мы XXX встретимся в XXX Дубай, Вы хотите присоединиться к нам XXX ? "

В этом примере мы поставили MMM на первый результат XXX. Как я могу это сделать?

Я пробовал ниже этого кода, но он заменял каждый XXX на MMM;

UPDATE wp_comments SET comment_content = REPLACE ( comment_content, 'XXX', 'MMM' ) WHERE `comment_ID`=334 LIMIT 1

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

В MySQL <8.0, где <code>regexp_replace() и т.п. не поддерживаются, вы можете использовать строковые функции:

update wp_comments
set comment_content = concat(
    substr(comment_content, 1, locate('XXX', comment_content) - 1),
    'MMM',
    substr(comment_content, locate('XXX', comment_content) + 3)
) 
where comment_id = 334 and locate('XXX', comment_content) > 0

Демонстрация на DB Fiddle :

comment_id | comment_content                                                               
---------: | :-----------------------------------------------------------------------------
       334 | Hello MMM tomorrow we XXX will meeting in XXX Dubai, Do you want join us XXX ?
1 голос
/ 11 апреля 2020

regexp_replace() может делать то, что вы хотите. Он принимает необязательный аргумент, который является вхождением для замены:

UPDATE wp_comments
    SET comment_content = REGEXP_REPLACE( comment_content, 'XXX', 'MMM', 1, 1 )
    WHERE comment_ID = 334
    LIMIT 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...