首页 > 解决方案 > MariaDB比较char和number

问题描述

我对以下查询感到很困惑

SELECT 
 '6217001180007179362' = 6217001180007179156      -- 1
 , 6217001180007179362 = 6217001180007179156   ;  -- 0

「'6217001180007179362' = 6217001180007179156」怎么是1?

我的 maria DB 版本是 10.2.11-MariaDB。

标签: sqlmariadb

解决方案


当您在 MariaDB/MySQL 中输入一系列数字时,它会被解释为数字常量。就您而言,这可以满足您的要求。

当您输入一系列用单引号括起来的数字时,它会被解释为字符串。

当你比较两个数字常量时——嗯,没有问题。解决方案是您所期望的。

但是,如果一个是字符串,则值会被隐式转换。如文档中所述,它们属于这种情况:

在所有其他情况下,参数作为浮点(实)数进行比较。

您的值比浮点数具有更高的精度,因此它们的值看起来等于 MySQL。


推荐阅读