Виктор Янышев, Вообще, постгрес так отображает массивы. В вопросе не указана БД, не указано подробное описание поля. Теоретически, есил БД - постгрес, тип поля массив интов - мой запрос сработает
Расул Какушев, Вам нужно заранее знать тип характеристики и по пришедшим фильтрам собирать условия. А потом собирать запрос. Как мне кажется - это удобный вариант.
UPDATE `oc_product_discount` SET `price` = CEIL(price/10)*10 - 10
И изначально я бы написал SELECT запрос с этими условиями, а то мало ли, вам сейчас подскажут - а вы похерите данные в таблице.
Я с коллегами согласен - длинная транзакция - плохо, если у вас часто меняются данные. Если у вас есть нагрузка на приложение - выберите время, когда она минимальна. 20тыс записей в одной транзакции - не смертельно, в принципе, если у вас MySQL, который, по-моему(могу ошибиться, давно с ним не работал), не перестраивает индексы при update(если не изменяется значение из индекса). Если у вас PostgreSQL - он всегда перестраивает индекс, так как обновление записи реализовано как удаление и вставка.