Mysql 对于某些ID,SQL查询可以使用'like',但不能使用equals

Mysql 对于某些ID,SQL查询可以使用'like',但不能使用equals,mysql,mariadb,Mysql,Mariadb,我有一个带有事件表和一些条目的mariadb: MariaDB [db]> select id from event; +--------------------------------------+ | id | +--------------------------------------+ | 307304a6-a6f9-11ea-a857-0242c0a84006 | | 324b3d58-a704-11ea-a8

我有一个带有
事件
表和一些条目的mariadb:

MariaDB [db]> select id from event;
+--------------------------------------+
| id                                   |
+--------------------------------------+
| 307304a6-a6f9-11ea-a857-0242c0a84006 |
| 324b3d58-a704-11ea-a857-0242c0a84006 |
| 34a7420a-d893-11ea-aa55-0242c0a84005 |
| 48ff5659-f738-11ea-9ba6-0242c0a84005 |
| 60daad8b-f64f-11ea-bb99-0242c0a84005 |
| 64f31bde-afa0-11ea-9088-0242c0a84006 |
| 6ecb1814-b786-11ea-bc7d-0242c0a84005 |
| 7a9431e3-d88e-11ea-aa55-0242c0a84005 |
| 7b3a2a08-f64f-11ea-bb99-0242c0a84005 |
| 859c9507-d61a-11ea-aa55-0242c0a84005 |
| 956104e5-f73a-11ea-9ba6-0242c0a84005 |
| b3b78b4e-a6b2-11ea-a857-0242c0a84006 |
| de844d58-fbcf-11ea-9ba6-0242c0a84005 |
| f03fe24b-fbcf-11ea-9ba6-0242c0a84005 |
| f9c563ee-fcec-11ea-9ba6-0242c0a84005 |
+--------------------------------------+
15 rows in set (0.015 sec)
我有一个简单的查询,如下所示,它根据事件id选择事件。对于从上面的选择结果复制的某些id,它会按预期返回正确的事件,但是对于某些id,它不会返回任何内容:

MariaDB [db]> select id from event where id = '307304a6-a6f9-11ea-a857-0242c0a84006';
+--------------------------------------+
| id                                   |
+--------------------------------------+
| 307304a6-a6f9-11ea-a857-0242c0a84006 |
+--------------------------------------+
1 row in set (0.016 sec)

MariaDB [db]> select id from event where id = '48ff5659-f738-11ea-9ba6-0242c0a84005';
Empty set (0.015 sec)
但是,如果我使用
like
而不是
=
并在开头添加占位符,我会得到想要的结果:

MariaDB [db]> select id from event where id like '%48ff5659-f738-11ea-9ba6-0242c0a84005';
+--------------------------------------+
| id                                   |
+--------------------------------------+
| 48ff5659-f738-11ea-9ba6-0242c0a84005 |
+--------------------------------------+
1 row in set (0.014 sec)

我已经考虑过不可打印的ascii字符,但排除了:

MariaDB [db]> SELECT * FROM event WHERE id NOT REGEXP '[A-Za-z0-9]';
Empty set (0.016 sec)

MariaDB [db]> SELECT * FROM event WHERE id regexp '[^ -~]';
Empty set (0.015 sec)

MariaDB [db]> SELECT * FROM event WHERE id like '%\0%';
Empty set (0.017 sec)
数据库是
latin1
编码的,所讨论的表是
utf8mb4\u unicode\u ci


同一查询怎么可能对某些ID有效而对其他ID无效?我如何调试它?

看起来您很可能有额外的空间。尝试
其中id不是regexp'^[-a-z0-9]+$”或length(id)36
是的,它似乎有一些额外的空格。我使用相同的格式和数据创建了一个数据库和一个表,并且我对相同的查询没有任何问题。哪些列类型具有
id
列?请提供
SHOW create table
。如果正确声明了
id
,则不需要像
REGEXP
这样的
。我无法复制此内容。您能从表中导出SQL并将其复制为SQL FIDLE吗?看起来您很可能有额外的空间。尝试
其中id不是regexp'^[-a-z0-9]+$”或length(id)36
是的,它似乎有一些额外的空格。我使用相同的格式和数据创建了一个数据库和一个表,并且我对相同的查询没有任何问题。哪些列类型具有
id
列?请提供
SHOW create table
。如果正确声明了
id
,则不需要像
REGEXP
这样的
。我无法复制此内容。您可以从表中导出SQL并将其复制为SQL FIDLE吗?