CREATE TABLE AS 时 Mysql 截断了不正确的双精度值

问题描述 投票:0回答:1

我有一个简单的表,称为 feed

id 价格
1 20,00
2 30,00
3 40,00
4 abcdef
5

其中价格是

VARCHAR
列。这个很重要。现在我可以做一个简单的查询,例如

select * from feed where price > 20
并且它可以工作,因为 mysql 进行了隐式类型转换。

但是如果我执行这个查询

create table results as select id, price from feed where price > 20
失败并显示
truncated incorrect DOUBLE value: 20,00

即使我在 SELECT 和 WHERE 的查询中都放入

cast(price as decimal)
,它仍然失败。

如何抑制或修复此错误?

mysql casting double truncate
1个回答
0
投票

我遇到了类似的问题,您可能会在 CREATE TABLE 的文档中找到解决方案:MariaDB - 创建表

MariaDB 从 MySQL ~2009 分叉出来,所以它很相似,尤其是在旧功能上

您可以指定特定列以将它们转换为某种数据类型:

CREATE TABLE test (a INT NOT NULL, b CHAR(10)) ENGINE=MyISAM
SELECT 5 AS b, c, d FROM another_table;

看起来有点碰运气,我有一个 7 列表(3 个 varchar,4 个整数),工作正常 - 新表将整数创建为 Double(17,0)。

另一个表有 34 列各种类型,但它一直出错,即使我将其减少到 8 个微小的 int 列,所以我屈服并使用创建代码来创建它,并将数据插入到其中

因此,这也是一种选择,首先创建表格,然后将 IGNORE 插入其中,直到变得更加稳定。

© www.soinside.com 2019 - 2024. All rights reserved.