mysql中复制表数据提示报错,该怎么处理

mysql中复制表数据提示报错

有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’

请问这个是为什么?高手请解释下。



检查adeS中的值是否有字符




先赋值 在再换




跟mysql的版本有关吧。

mysql> INSERT into b (bid,bdes) SELECT aid,CAST(ades AS DECIMAL(20,8)) FROM a;

Query OK, 5 rows affected (0.03 sec)

Records: 5 Duplicates: 0 Warnings: 0

mysql> select * from b;

+——+————+

| bid | bdes |

+——+————+

| 1 | 1.00000000 |

| 2 | 2.00000000 |

| 3 | 3.00000000 |

| 4 | 4.00000000 |

| 5 | 5.00000000 |

+——+————+

5 rows in set (0.00 sec)

mysql> select @@version;

+——————+

| @@version |

+——————+

| 5.1.46-community |

+——————+

1 row in set (0.01 sec)



刚刚测试了下 直接select是不会报错的 只有warnings

做insert的时候会报错

mysql中复制表数据提示报错,该怎么处理

相关文章:

你感兴趣的文章:

标签云: