不希望mysql将字符串自动转换为整数

hc8w905p  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(295)

在我看来,mysql从字符串到整数的自动类型转换很奇怪。

mysql> select * from `isps` where `id` = '3ca6fb49-9749-3099-b30d-19ce56349ad6' OR `unique_id` = '3ca6fb49-9749-3099-b30d-19ce56349ad6';
+----+--------------------------------------+---------------+--------------+---------------------+---------------------+
| id | unique_id                            | name          | code         | created_at          | updated_at          |
+----+--------------------------------------+---------------+--------------+---------------------+---------------------+
|  3 | ee8db3be-1bf7-3440-8add-37232cfc4ecb | TTN           | ttn          | 2019-09-26 08:12:14 | 2019-09-26 08:12:14 |
|  7 | 3ca6fb49-9749-3099-b30d-19ce56349ad6 | ONE BROADBAND | onebroadband | 2019-09-26 08:12:14 | 2019-09-26 08:12:14 |
+----+--------------------------------------+---------------+--------------+---------------------+---------------------+

我没有预料到id=3的结果有人能帮我吗。

数据库中的数据类型

id - BIGINT
unique_id - varchar(200)
ffdz8vbo

ffdz8vbo1#

你可以投 id 在进行比较之前将其转换为字符串。

select * from `isps` where CAST(`id` AS CHAR) = '3ca6fb49-9749-3099-b30d-19ce56349ad6' OR `unique_id` = '3ca6fb49-9749-3099-b30d-19ce56349ad6';

请注意,这将大大减慢查询的速度,因为它将无法使用 id 列。

相关问题