我需要在我的DB MySQL表格中将列值从 VARCHAR(255)转换为 DECIMAL(10,5)。
我尝试过这个SQL查询,首先将','替换为'。,然后将新值设置为 DECIMAL(10,5) ):
[SQL]UPDATE `doTable`
SET doAV = REPLACE (doAV, ',', '.')
WHERE
YEAR (`doDate`) IN (YEAR(CURDATE()));
Affected rows: 83169
Time: 1.846s
[SQL]
ALTER TABLE `doTable` MODIFY COLUMN doAV DECIMAL (10, 5);
[Err] 1292 - Truncated incorrect DECIMAL value: '2226,000'
但我有错误:
[Err] 1292 - Truncated incorrect DECIMAL value: '2226,000'
如何解决这个问题?
你能帮助我吗?
提前感谢您的帮助,非常感谢。
#Edit 01
+----------+
| doAV |
+----------+
| 2226.000 |
| 2226.00 |
| 2225.750 |
| 2225.600 |
| 2225.533 |
| 2225.250 |
| 2225.000 |
| 2225.00 |
| 2224.800 |
| 2224.667 |
+----------+
#Edit 02
+-----------+
| doAV |
+-----------+
| 2226.000 |
| 792.000 |
| 338.400 |
| 13635.000 |
| 1438.125 |
| 220.800 |
| 172.000 |
| 253.000 |
| 4258.500 |
| 352.800 |
+-----------+
答案 0 :(得分:0)
我认为您只更新了YEAR (doDate) IN (YEAR(CURDATE()))
中的行。首先尝试更新所有行。从WHERE
删除UPDATE
条件并再次运行。
尝试仅检查整个部分
SELECT *
FROM doTable
WHERE LENGTH(LEFT(doAV,IFNULL(NULLIF(LOCATE('.',doAV)-1,-1),LENGTH(doAV))))>5
DECIMAL(10, 5)
=>你的整个部分只能包含5位数字(10-5 = 5)。