首先写个问题:
CREATE TABLE IF NOT EXISTS `tbl` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`process_id` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8;
然后执行:select * from tbl
where id = ‘8d11f9f1-5cba-11eb-a760-1a367a3457cf’ ,你觉得会得到什么结果?
结果是可能会返回数据哦。
原因就是mysql的隐式类型转换
- 若字符串是以数字开头,且全部都是数字,则转换为数字结果是整个字符串;部分是数字,则转换为数字结果是截止到第一个不是数字的字符为止
可能会误用的场景:
- 通过mybatis-generator 工具生成对应实体类和mapper时,由于自动户工具的帮助,可能就不在意列的一些类型。可能会导致一些查询时出现意料之外的情况
共有条评论 网友评论