programing

SQL 쿼리는 'like'와 함께 작동하지만 일부 ID의 경우 동등하지 않습니다.

skycolor 2023. 9. 9. 09:15
반응형

SQL 쿼리는 'like'와 함께 작동하지만 일부 ID의 경우 동등하지 않습니다.

나는 mariadbdb를 가지고 있습니다.event표 및 몇 가지 항목:

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_unicode_ci.

동일한 쿼리가 다른 ID가 아닌 일부 ID에 대해 작동하는 것이 어떻게 가능합니까?디버그하려면 어떻게 해야 합니까?

언급URL : https://stackoverflow.com/questions/64013942/sql-query-works-with-like-but-not-with-equals-for-some-ids

반응형