sql - MariaDB比较char和number
问题描述
我对以下查询感到很困惑
SELECT
'6217001180007179362' = 6217001180007179156 -- 1
, 6217001180007179362 = 6217001180007179156 ; -- 0
「'6217001180007179362' = 6217001180007179156」怎么是1?
我的 maria DB 版本是 10.2.11-MariaDB。
解决方案
当您在 MariaDB/MySQL 中输入一系列数字时,它会被解释为数字常量。就您而言,这可以满足您的要求。
当您输入一系列用单引号括起来的数字时,它会被解释为字符串。
当你比较两个数字常量时——嗯,没有问题。解决方案是您所期望的。
但是,如果一个是字符串,则值会被隐式转换。如文档中所述,它们属于这种情况:
在所有其他情况下,参数作为浮点(实)数进行比较。
您的值比浮点数具有更高的精度,因此它们的值看起来等于 MySQL。
推荐阅读
- sql - sql连接两个带有avg的表
- firebase - Firebase Messaging 无法发送后台消息 Flutter
- javascript - 在 Chrome 和 Edge 中使用 Javascript 更改 iFrame 大小闪烁
- python - 这是我试图在 Jupyter 上运行的一个简单代码,它来了
- turtle-graphics - 运行乌龟代码时没有创建新窗口
- docker - Nginx 代理传递到 dockerized gunicorn 服务器
- c++ - 带有 if 语句的函数没有返回值
- testing - Testcafe - 锤头阴影 UI 的加载图标可见
- python - 我想做 django 聊天应用程序
- powershell - 创建一个具有 3 个标题的对象:用户、ID、时间