隐性转换规则

隐性转换的部分规则:
(1)两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换
(2)两个参数都是字符串,会按照字符串来比较,不做类型转换
(3)两个参数都是整数,按照整数来比较,不做类型转换
(4)十六进制的值和非数字做比较时,会被当做二进制串
(5)有一个参数是 TIMESTAMP 或 DATETIME,并且另外一个参数是常量,常量会被转换为 timestamp
(6)有一个参数是 decimal 类型,如果另外一个参数是 decimal 或者整数,会将整数转为decimal 后进行比较,如果另外一个参数是浮点数,则会把 decimal 转换为浮点数进行比较
(7)所有其他情况下,两个参数都会被转换为浮点数再进行比较

算数运算时的隐性转换

两个布尔值相加,数值与布尔值相加。这两种情况,布尔值都会自动转成数值,然后再相加。
如果是两个字符串相加,这时加法运算符会变成连接运算符,返回一个新的字符串,将两个原字符串连接在一起。
如果一个运算子是字符串,另一个运算子是非字符串,这时非字符串会转成字符串,再连接在一起。
由于从左到右的运算次序,字符串的位置不同会导致不同的结果。
除了加法运算符,其他算术运算符(比如减法、除法和乘法)都不会发生重载。它们的规则是:所有运算子一律转为数值,再进行相应的数学运算。
使用加法时,只要表达式中有字符,最后结果都是字符串

比较运算的隐形转换

对象和布尔值比较对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值