我在mysql中需要将表a数据复制到表b中,但提示报错。
有a,b两个表,需要将a表数据,插入b表,但是提示报错,看代码:
SQL code
--创建a表
CREATE TABLE `a` (
`aid` int(11) DEFAULT NULL,
`ades` varchar(50) DEFAULT NULL
);
INSERT INTO `a` VALUES (1,'1a'),(2,'2a'),(3,'3a'),(4,'4a'),(5,'5a');
--创建b表
CREATE TABLE `b` (
`bid` int(11) DEFAULT NULL,
`bdes` decimal(20,8) DEFAULT NULL
);
--复制数据
INSERT into b (bid,bdes) SELECT aid,CAST(ades AS DECIMAL(20,8)) FROM a;
报错:
[Err] 1292 - Truncated incorrect DECIMAL value: '1a'
然后写成:
INSERT INTO b (bid,bdes)
SELECT aid,(ades+0) as ades1 FROM a;
也报错:
[Err] 1292 - Truncated incorrect DOUBLE value: '1a'
请问这个是为什么?高手请解释下。
想实现这个功能正确的应该怎样写???
追问:1a不是字符串吗?为什么不能转换成数字啊??
但是我单独运行
SELECT aid,CAST(ades AS DECIMAL(20,8)) FROM a;
却没提示错误啊,可以转换。我直接运行:
SELECT aid,CAST(ades AS DECIMAL(20,8)) AS ades1 FROM a;
就是下面的结果:
aid ades1
1 1.00000000
2 2.00000000
3 3.00000000
4 4.00000000
5 5.00000000
注:这个是mysql中的问题。我的mysql版本是5.5.13的。
那不用cast这个转换函数,直接用:
INSERT INTO b (bid,bdes)
SELECT aid,(ades+0) as ades1 FROM a;
也报错,
但单独运行:
SELECT aid,(ades+0) as ades1 FROM a;
正常。