我创建了一个包含 INT 类型列的表:
CREATE TEMPORARY TABLE `myTab` (`int` INT, `text` TEXT, `float` FLOAT);
现在我尝试在 INT 列中添加一个浮点值
INSERT INTO `myTab` (`int`) VALUES (13.34);
我没有收到警告:
SHOW WARNINGS;
虽然后面的列只有13个:
SELECT * FROM `myTab`;
当将浮点值添加到整数列时,是否可能以某种方式收到警告?我目前正在使用 mysql Ver 14.14 Distrib 5.5.31,用于使用 readline 6.2 的 debian-linux-gnu (i686)
添加:我想避免为每个 INT 列 ( How do I check to see if a value is an integer in MySQL?) 添加“点检查”。我希望在转换为 INT 期间丢失数据时发出警告。
最佳答案
您可以使用 DECIMAL(n, 0)
类型代替 INT
。尝试将非整数插入此类列会引发警告。
CREATE TEMPORARY TABLE t (id DECIMAL); -- equivalent to the default DECIMAL(10, 0), which covers the range of INT
INSERT INTO t VALUES (0.9); -- raises warning "1265 - Data truncated for column 'id' at row 1"
SELECT * FROM t; -- 0.9 was rounded to 1
我知道这只是一种解决方法,肯定会对性能产生负面影响(尽管可能很小)。但这是我能够想出的唯一可行的解决方案。
关于mysql - 将 FLOAT 值插入 MySQL 中的 INT 列时如何获得警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672374/