翼度科技»论坛 编程开发 mysql 查看内容

mysql 隐式类型转换规则

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
规则:
1、两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用  对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换
2、两个参数都是字符串,会按照字符串来比较,不做类型转换
3、两个参数都是整数,按照整数来比较,不做类型转换
4、十六进制的值和非数字做比较时,会被当做二进制串
5、有一个参数是 TIMESTAMP 或 DATETIME,并且另外一个参数是常量,常量会被转换为 timestamp
6、有一个参数是 decimal 类型,如果另外一个参数是 decimal 或者整数,会将整数转换为 decimal 后进行比较,如果另外一个参数是浮点数,则会把 decimal 转换为浮点数进行比较
7、所有其他情况下,两个参数都会被转换为浮点数再进行比较 
 
踩坑:
1、比如字符串和数字对比都会转化成double,string 转化成 double时 会出现精度丢失 ,超过16位就不准了

来源:https://www.cnblogs.com/lwx521/p/17217941.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具