Пришлось столкнуться с такой задачей. В таблице перечислены модели часов марки CASIO.
И в конце, что типично для русского рынка, добавлены ER, DEF, UER и прочая.
Пришлось поработать с SQL запросами, чтобы оставить только полезные названия у моделей часов.
Данный запрос делает выборку по последней букве каждого значения и обобщает с помощью GROUP BY общее число каждой из таких последних букв:
SELECT SUBSTRING(`name_ru-RU`,LENGTH(`name_ru-RU`),1) as one_var,
count(`name_ru-RU`) as cnt
FROM `q3j5c_jshopping_products`
where `product_manufacturer_id`=1
group by one_var
Здесь я выбираю уже список моделей и идентификаторов товара по каждой конкретной последней букве:
SELECT p.`product_id`, `name_ru-RU`
FROM `q3j5c_jshopping_products` as p,
`q3j5c_jshopping_products_to_categories` as pc
WHERE p.`product_id`=pc.`product_id`
and p.`product_manufacturer_id`=1
and pc.`category_id` <> 30
and SUBSTRING(p.`name_ru-RU`,LENGTH(p.`name_ru-RU`),1) ='R'
А в этом запросе я удаляю, например DR в конце каждой модели:
UPDATE `q3j5c_jshopping_products` as p,
`q3j5c_jshopping_products_to_categories` as pc
set p.`name_ru-RU`=SUBSTRING(p.`name_ru-RU`,1,LENGTH(p.`name_ru-RU`)-2),
p.`name_en-GB` = SUBSTRING(p.`name_en-GB`,1,LENGTH(p.`name_en-GB`)-2),
p.`name_sl-SI` = SUBSTRING(p.`name_sl-SI`,1,LENGTH(p.`name_sl-SI`)-2)
WHERE p.`product_id`=pc.`product_id`
and p.`product_manufacturer_id`=1
and pc.`category_id` <> 30
and SUBSTRING(p.`name_ru-RU`,LENGTH(p.`name_ru-RU`)-1,2) ='DR'