我需要在DB MySQL表中将列值从VARCHAR(255)转换为十进制(10,5)。
我尝试过这个SQL查询,其中首先替换',' = '.',然后将列值设置为十进制(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'如何解决这个问题?
你能帮帮我吗?
提前感谢您的帮助,真的很感激。
#编辑01
+----------+
| doAV |
+----------+
| 2226.000 |
| 2226.00 |
| 2225.750 |
| 2225.600 |
| 2225.533 |
| 2225.250 |
| 2225.000 |
| 2225.00 |
| 2224.800 |
| 2224.667 |
+----------+#编辑02
+-----------+
| doAV |
+-----------+
| 2226.000 |
| 792.000 |
| 338.400 |
| 13635.000 |
| 1438.125 |
| 220.800 |
| 172.000 |
| 253.000 |
| 4258.500 |
| 352.800 |
+-----------+发布于 2017-11-22 09:03:20
我认为您只更新了YEAR (doDate) IN (YEAR(CURDATE()))中的行。首先尝试更新所有行。从您的WHERE中删除UPDATE条件并再次运行它。
试着只检查整个部分
SELECT *
FROM doTable
WHERE LENGTH(LEFT(doAV,IFNULL(NULLIF(LOCATE('.',doAV)-1,-1),LENGTH(doAV))))>5DECIMAL(10, 5) =>整个部件只能包含5个数字(10-5=5)。
https://stackoverflow.com/questions/47430419
复制相似问题