Как изменить одно слово

#mysql #sql

#mysql #sql

Вопрос:

В моей базе данных MySQL у меня есть несколько строк изображений с тегами, и я должен изменить один из тегов для всех изображений.

Теги выглядят следующим образом tag1,tag2,tag3 в одной строке.

Как я могу выделить, чтобы я мог изменить только «tag2»? Например, «tag2» превращается в «tag4», в то время как tag1 и tag3 не должны меняться вообще.

Я вообще не могу разобраться в этом.

есть 1000 изображений, и я могу изменить только 1 за раз, но мне нужно изменить это для всех 1000 изображений в одном запросе mysql, если это возможно.

Комментарии:

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

Ответ №1:

 UPDATE table SET tags = REPLACE(tags, 'tag2', 'tag4')
  

Ответ №2:

Вы должны принять во внимание, что tag2 это может быть частью другого тега, и, чтобы избежать ненужных обновлений, проверьте, tag2 действительно ли это часть столбца:

 update tablename
set col = trim(both ',' from replace(concat(',', col, ','), ',tag2,', ',tag4,'))
where concat(',', col, ',') like '%,tag2,%' 
  

Смотрите демо

Комментарии:

1. Изменит ли это тег 2, даже если вокруг будет больше материала? до и после тега2 может быть более одного тега.

2. Этот код изменяет tag2 на tag4, только если он не является частью другого тега. Это означает, что эти tag1, tag2, tag3 будут изменены на tag1, tag4, tag3, но tag1, tag2abc, tag3 не будут изменены, потому что tag2 является только частью тега, а не тегом.

3. Посмотрите демо-версию и проверьте ее