当前位置:数据库 > MySQL >>

我在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;
正常。
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,