MySQL 的隐式类型转换

    xiaoxiao2024-05-21  109

    换十六进制的值和非数字做比较时,会被当做二进制串,和数字做比较时会按下面的规则处理有一个参数是 TIMESTAMP 或 DATETIME,并且另外一个参数是常量,常量会被转换为 timestamp有一个参数是 decimal 类型,如果另外一个参数是 decimal 或者整数,会将整数转换为 decimal 后进行比较,如果另外一个参数是浮点数,则会把 decimal 转换为浮点数进行比较所有其他情况下,两个参数都会被转换为浮点数再进行比较

    注意一个安全问题:假如 password 类型为字符串,查询条件为 int 0 则会匹配上。

    由于 MySQL 隐式类型转换规则比较复杂,依赖 MySQL 隐式转换很容易出现各种想想不到的问题,而且 MySQL 隐式类型转换本身也是非常耗费 MySQL 服务器性能的,所以非常不推荐这样使用

    原文发布时间为:2015-07-05

    本文来自云栖社区合作伙伴“Linux中国”

    相关资源:Mysql隐式类型转换原则
    最新回复(0)