CREATE TABLE `test` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`a` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ;
已知有3条不同a值的数据
但语句
SELECT * FROM `test` where a = 99233720368547758074444;
却能查出多条,是变模糊匹配了?还是转换失败了?
这是怎么一个实现过程呢,很好奇,首先想到的是字段类型转化问题
然后是来验证这个想法,测试了以下几个猜测:
- 字段超过某个长度就一定匹配吗? 结果:不是
- 查询条件长度超过多少位会产生这个问题? 结果:20位
- 匹配到的数据条长度可以不一样长? 结果:不是
- 可以把字段varchar中数字改成字母吗? 结果:不可以
根据以上结果,得出初步结论:如果按超过20位数值查询varchar类型的字段,字段会把字段值按前20位转化为数值来匹配查询条件,但不能是字母,这个操作好像只适用数字。
当然,完善结论会需要更多测试