Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MySQL/MiRADB认为一个字符串(UUID)等于整数?_Mysql_Mariadb - Fatal编程技术网

为什么MySQL/MiRADB认为一个字符串(UUID)等于整数?

为什么MySQL/MiRADB认为一个字符串(UUID)等于整数?,mysql,mariadb,Mysql,Mariadb,我有下表(mariadb:10.3): 当我对这个表运行下面的查询时,我得到下面的结果。出于某种原因,字符串中的第一个数字与ID匹配,ID是一个自动递增的整数 查询: select * from `people` where `id` = "1f028a28-f032-482b-a8b4-dc5483489552" 结果: +----+-------------+--------------------------------------+-------------+-------------

我有下表(mariadb:10.3):

当我对这个表运行下面的查询时,我得到下面的结果。出于某种原因,字符串中的第一个数字与ID匹配,ID是一个自动递增的整数

查询:

select * from `people` where `id` = "1f028a28-f032-482b-a8b4-dc5483489552"
结果:

+----+-------------+--------------------------------------+-------------+-------------------------+---------------------+---------------------+
| id | public_id   | uuid                                 | name        | slug                    | created_at          | updated_at          |
+----+-------------+--------------------------------------+-------------+-------------------------+---------------------+---------------------+
| 1  | 8ipui1pn9ln | 52ea30f4-cafa-4ddb-8b74-1502a34c3c21 | Mark Hamill | 8ipui1pn9ln-mark-hamill | 2020-04-15 18:47:33 | 2020-04-15 18:47:35 |
+----+-------------+--------------------------------------+-------------+-------------------------+---------------------+---------------------+

请注意,这是一个精简的示例。我用整数搜索字符串的真正原因是,我用and

搜索多个列的动态值。MySQL将通过获取第一个数字序列并忽略从第一个字母开始的任何内容,隐式地尝试将字符串转换为int


这不是一个直观的行为,但一旦你意识到了这一点,你就可以通过显式地将这些条件转换为字符串来避免它。

注意,精简版可能会使用类似“3c21”的id,而不是“52ea30f4-cafa-4ddb-8b74-1502a34c3c21”,以便于理解。当然,“name”不能是唯一的。非常感谢。在做了更多的阅读之后,我能够利用where语句上的
BINARY
函数来获得我想要的结果。
+----+-------------+--------------------------------------+-------------+-------------------------+---------------------+---------------------+
| id | public_id   | uuid                                 | name        | slug                    | created_at          | updated_at          |
+----+-------------+--------------------------------------+-------------+-------------------------+---------------------+---------------------+
| 1  | 8ipui1pn9ln | 52ea30f4-cafa-4ddb-8b74-1502a34c3c21 | Mark Hamill | 8ipui1pn9ln-mark-hamill | 2020-04-15 18:47:33 | 2020-04-15 18:47:35 |
+----+-------------+--------------------------------------+-------------+-------------------------+---------------------+---------------------+