如果在将字母字符附加到整数值时,如何确保MySQL找不到误报?
结果表明,给出了这个表:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `mytable`
ADD PRIMARY KEY (`id`);
这个查询:
SELECT * FROM `mytable` WHERE `id`='2'
这样可以正常显示id=2
的结果。但我发现字符串值是' 2abc'在查询中也返回该行:误报。我宁愿让查询失败并发出信号,表示它无法在id
中找到mytable
..
可以通过在运行查询之前确保该值是有效整数来避免这种情况,但是为了将来的目的,我希望保持字符串兼容。
答案 0 :(得分:0)
这在文档中有详细记载 https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
检查行
这样做的原因是可能存在许多不同的字符串 转换为值1,例如' 1',' 1',或' 1a'。
因此,如果没有显式类型转换,它会将字符串转换为整数,在您的情况下,2abc变为2和2 = 2 =>是的,这称为静默转换
select '2ab'+0; => 2
但是
select 'ab2'+0 => 0