MySQL 的隐式类型转换

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

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

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



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


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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL 关系型数据库 MySQL
隐秘的 MySQL 类型转换
近期工作中同事遇到的一个真实问题,稍作整理后分享给大家~
隐秘的 MySQL 类型转换
|
关系型数据库 MySQL
MySQL - 类型转换函数:CONVERT & CAST
MySQL - 类型转换函数:CONVERT & CAST
347 0
|
关系型数据库 MySQL 安全
MySQL的隐式类型转换
官方解读: 1.如果一个或两个参数都是NULL,比较的结果是NULL,除了NULL安全的相等比较运算符。对于NULL NULL,结果为true。不需要转换 2.如果比较操作中的两个参数都是字符串,则将它们作为字符串进行比较。
1283 0
|
关系型数据库 MySQL SQL
|
MySQL 关系型数据库 索引
小心MySQL的隐式类型转换陷阱
1. 隐式类型转换实例 今天生产库上突然出现MySQL线程数告警,IOPS很高,实例会话里面出现许多类似下面的sql:(修改了相关字段和值) SELECT f_col3_id,f_qq1_id FROM d_dbname.t_tb1 WHERE f_col1_id=1226391 and f_c
3356 0
|
关系型数据库 MySQL 数据库
MySQL类型转换注意事项
最近在做的一项工作是将之前使用MSSQLServer数据库的服务, 改写为支持MySQL数据库,SQL语句中涉及了一些类型转换的功能, 结果发现MySQL的类型转换函数“CONVERT”并没有提供很好的数据类型名称的兼容性, 参数顺序上也不一样! SQLServer中使用con...
1024 0
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
767 158

推荐镜像

更多