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