前言:
眼前你们对“mysql字段类型转换”大体比较珍视,看官们都需要学习一些“mysql字段类型转换”的相关知识。那么小编同时在网络上收集了一些有关“mysql字段类型转换””的相关文章,希望你们能喜欢,朋友们一起来了解一下吧!这个视频给大家分享一个关于mysql字段类型的小知识点。先看我这里有一张表,它里面有这么多条数据,现在我来执行where id等于a,大家觉得能不能查出数据?仔细看,这里并没有id等于a的数据,但是我现在来执行它却能够查出来,它把id等于0的数据给查出来了,这是为什么?
这里的根本原因是首先id的类型是int类型,另外一点我这里用的是字符类型,所以对于mysql而言,它其实在执行这个等式的时候,因为等式左右两边数据类型不一样,所以说mysql它会去进行类型转换。
具体的规则就是把字符转成了数字,对于这个字符a,它转成的数字是多少?其实是0,比如说可以来验证一下a等于0,就是如果这里返回的是1,就代表它等式左右两边是相等的,看到没?所以说在mysql里面,字符的这种a会转成0,同样的你是字符b,它其实也会转成0,所以说就会把id等于0的数据给查出来。
那么是不是所有的字符都会转成0?并不是,比如说假设我前面写了一个一,那么它查出来的数据就是id等于1的,所以说包括你再写个8,也是一样的,就会查出id等于8的。所以在mysql里面,其实会去把这个字符的数字的前缀,把它取出来,然后作为最终转换出来的数字,所以说这个大家要注意。
所以在用的时候就要注意了,比如说假设我现在有一个mybatis,我现在这边其实就有一个id的,假设有一个id字段,我这里写的是String,然后数据库的类型可能是int类型_info,就我就建议大家不要这么来用er_info,因为你可能在使用的时候,你这里可能传了个字符一,你发现它是能够正确的查出数字的。
这是因为mysql,它会把这个字符2,就转成对应的数字2,所以能够查出对应的数字。但是如果有一天想传一个乱七八糟(特殊)的数字进来,可能会想到这个数字符串应该是查不到数据的,但是这个就不一定了,有可能是能够查出来数据的。
所以大家在用mybatis的时候就要注意了,如果数据库的字段类型确实是int类型,那么这里就不要用shift了。
喜欢就点个关注吧。
标签: #mysql字段类型转换 #mysql字段类型转换为数字