在 MySQL 5.7 中,定义如下所示的表
CREATE TABLE `person` (
`person_id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
PRIMARY KEY (`person_id`),
KEY `ix_name` (`name`)
) ENGINE=InnoDB CHARSET=utf8
然后我们准备了两条记录进行测试,name字段(varchar类型)的值是
- 123456789123456789
- 1
分别。
情况1
select * from person where name = 123456789123456789-1;
请注意,我们在 where 子句中使用数字而不是字符串。带名字的记录123456789123456789返回了,好像-1最后被忽略了!
此外,我们添加了另一条记录 name = 123456789123456788,这次上面的选择返回两条记录,包括123456789123456789和123456789123456788;
输出看起来很奇怪!
案例2
select * from person where name = 123456789123456789-123456789123456788;
我们可以使用 name 获取记录1,在这种情况下,它似乎-充当减号运算符。
为什么-在两种情况下的行为如此不同!