Корректный SQL запрос на смену наименования продукта

Здравствуйте, подскажите пожалуйста, где у меня ошибка.

В таблице shop_product в поле name необходимо сменит названия.

Сейчас развания имеют вид:
Плитка 100х200х40, серая
Плитка 100х200х60, серая
Плитка 100х200х40, красная, с мраморной крошкой
Плитка 100х200х80, серая, с мраморной крошкой
Плитка 100х200х40, серая, 1
Плитка 100х200х60, серая, 1
Плитка 100х200х40, красная, с мраморной крошкой 1
Плитка 100х200х80, серая, с мраморной крошкой 1

Мне необходимо сменить одним запросам или несколькими (желательно одним) изменить существующее название, у которых в конце добавлена 1, (т.е. если в конце добавлена 1, то меняем название), а именно

Плитка 100х200х, - заменяем на Плитка 200х100х при этом в конце 1 убираем.

Делаю запросом:

update `shop_product` set name = REPLACE(name, 'Плитка 100х200х% 1', 'Плитка 200х100х%') where name like 'Плитка 100х200х% 1'

При имитации запроса пишет затронуто 0 строк.

2 ответа

  • 1
    Евгений Химич 23 августа 2021 08:53 #

    Что-то мне подсказывает, что реплайс так не работает.

  • 2
    Евгений Химич 23 августа 2021 16:20 #

    Разобрался, если у кого-то тоже будет потребность в таких манипуляциях, вот решение.

    update shop_product SET
    name = REPLACE(name, '100х200х', '200х100х')
    where name like '%100х200х%1';
    
    update shop_product SET
    name = SUBSTRING(name, -CHAR_LENGTH(name), CHAR_LENGTH(name) - 1)
    where name like '%1';

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите