Я хочу очистить столбец цены и заставить все значения храниться в базе данных до 2 DP. Сам столбец - это варчар, и нет, я не могу изменить столбец на десятичный (10,2);) < /p>
Легко, подумал я. Мой тест: < /p>
Код: Выделить всё
SELECT ID, Price, ROUND(Price, 2) as Fixed
FROM table
WHERE Price REGEXP '[0-9]+.?[0-9]*'
< /code>
output: < /p>
ID Price Fixed
1001332 60.31 60.31
1001334 66 66.00
1001336 32.2879 32.29
1001338 66 66.00
1001340 42.2 42.20
1001342 42.2 42.20
1001344 42.2 42.20
1001346 42.2 42.20
1001348 29.54 29.54
1001350 31.07 31.07
...
< /code>
Поэтому я решил, что позволю ему разорвать: < /p>
UPDATE table
SET Price = ROUND(Price, 2)
WHERE Price REGEXP '[0-9]+.?[0-9]*'
< /code>
output:
0 Ошибки. 0 затронутых строк. < /P>
Я попробовал несколько других вариантов: < /p>
UPDATE table
SET Price = ROUND(Price, 2)
WHERE Price ""
< /code>
output:
0 Ошибки. 0 рядов затронуты. < /P>
UPDATE table
SET Price = ROUND(Price, 2)
WHERE 1
< /code>
Вывод:
Усеченное неверное двойное значение: ''
(из -за этих пустых значений) < /p>
мне нужна подпрограмма?UPDATE table AS t1
SET Price = (
SELECT ROUND(Price, 2)
FROM table AS t2
WHERE t1.ID = t2.ID
)
WHERE Price REGEXP '[0-9]+.?[0-9]*'
Подробнее здесь: https://stackoverflow.com/questions/797 ... mal-places