Web-Gate
где заказать сайт +38 (093) 209 60 74 где заказать сайт +1 (510) 491 89 19
Пн - Вс: 10 00 - 19 00
Профессиональное продвижение сайтов — поисковая оптимизация,
раскрутка сайта, разработка и создание сайта

MySQL - работающие запросы: UPDATE, SELECT c WHERE AND, REPLACE и FORMAT

Отзывы ()

Теги:

Рекомендуйте нас:

Оштрафованные за продажу ссылок сайты, Google принимает меры.

Оштрафованные за продажу ссылок сайты, Google принимает меры.

26.03.2013
Если сайт ссылающийся на вас, оштрафован за продажу ссылок - как от этого пострадает ваш ресурс?
Главная - Блог - MySQL - работающие запросы: UPDATE, SELECT c WHERE AND, REPLACE и FORMAT
14.08.2014

Как всегда, когда самому что то нужно - ответа готового не найти. Понадобилась массовое обновление цен на сайте, а товаров не мало 920. Поднять цены на 10%. Поле где хранится цена типа STRING, а некоторые цены имеют дробную часть отделенную запятой :) Т.е. если умножать - запятая не будет воспринята. Да и еще некоторые цены записаны с пробелом, например "20 340" - если это на что то умножить результат тоже будет не верным. Цель была такая:

  1. Заменить все запятые в поле (столбике) одной таблицы MySQL по заданному двойному условию на точки
  2. Убрать все пробелы по тому же условию
  3. Перемножить все это на 1.1
  4. Округлить до двух чисел после запятой

Отображаем нужные нам поля, по заданному одному условию

SELECT * FROM `var_contentvalues` WHERE tmplvarid in (10);

т.е. показать "все" поля (столбики) из таблицы var_contentvalues где в столбике tmplvarid значение равно 10. Это нам выведет таблицу var_contentvalues но только те строки, у которых в столбике tmplvarid стоит 10.

Результат этой команды будет выглядеть примерно так

id tmplvarid name value huyalue putinloh
2 10 Vasja 500 bla bla da
67 10 Petja Vatnik 4 000 bla net
9 10 Lena 987,5 bla da

Замена с помощью UPDATE значений в MySQL - запятых на точки по двойному условию WHERE AND

UPDATE `var_contentvalues` 
SET value = REPLACE(value, ',', '.') 
WHERE `tmplvarid` = '10'  
AND 
`value` LIKE '%,%';

Т.е.
1. строка: изменить таблицу var_contentvalues 
2. строка
: заменить значение в столбике value на тот же самый value, но модифицированный с помощью команды RELACE, который заменит запятую ',' на  точку'.'
3. строка: для строк, у которых поле tmplvarid равно 10
4 и 5 строка: и еще в этих строках в столбике value должна присутствовать запятая, окруженная все равно чем (знак %)

Умножаем числа в БД MySQL - по заданному одному условию

UPDATE `var_contentvalues`
SET value = value * 1.1
WHERE `tmplvarid` = '10';

Все строки уже разобрали, кроме 2-й строки, она значит: записать в поле  value значение value только умноженное на 1.1

Только если у вас это цены - нужно будет округлить до сотых.

Умножаем числа в БД MySQL - по заданному одному условию - и округляем до двух значений после запятой

UPDATE `var_contentvalues`
SET value = FORMAT(value * 1.1,2)
WHERE `tmplvarid` = '10';

Все строки уже разобрали, кроме 2-й строки, она значит: записать в поле value значение value умноженное на 1.1 - при этом отформатировав значение до двух знаков после запятой FORMAT(значение/поле/выражение,n-знаков после запятой)

Спонсор статьи:
Септики для загородного дома - оборудование которое поможет вам осуществлять предварительную очистку сточных вод, и тем самым защитит окружающую среду!

Убираем пробелы в полях БД MySQL - с двумя условиями WHERE AND

UPDATE `var_contentvalues`
SET value = REPLACE(value, '\ ', '')
WHERE `tmplvarid` = '10'
AND
`value` LIKE '%\ %';

Здесь все разбирали кроме того что если вы хотите как либо обозначить ПРОБЕЛ при поиске или замене то нужно перед пробелом поставить "\"

Во всем этом НЕРЕАЛЬНО помогает разбираться - предварительная проверка синтаксиса http://www.piliapp.com/mysql-syntax-check/  - главное разбивайте ваши команды на много строк - тогда будет понятнее где ошибка.

Отзывы (0)


ОтменитьДобавить комментарий