반응형
MySQL/MariaDB에서 문자열(uuid)을 정수와 동일하게 간주하는 이유는 무엇입니까?
다음 표(mariadb:10.3)가 있습니다.
CREATE TABLE `people` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`public_id` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`uuid` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`slug` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`old_slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `people_uuid_unique` (`uuid`),
UNIQUE KEY `people_slug_unique` (`slug`),
UNIQUE KEY `people_public_id_unique` (`public_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
이 테이블에 대해 아래 쿼리를 실행하면 아래 결과가 나옵니다.어떤 이유에서인지 문자열 내부의 첫 번째 숫자가 자동 증분 정수인 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 |
+----+-------------+--------------------------------------+-------------+-------------------------+---------------------+---------------------+
참고로, 이것은 간소화된 예입니다.정수를 기준으로 문자열을 검색하는 진짜 이유는 및 를 사용하여 여러 열에 대해 동적 값을 검색하기 때문입니다.OR
.
MySQL은 첫 번째 숫자 시퀀스를 취하고 첫 번째 문자 이후의 모든 것을 무시함으로써 암묵적으로 int에 문자열을 캐스트하려고 시도합니다.
직관적인 행동은 아니지만, 일단 인지하고 나면 그러한 조건을 명시적으로 문자열에 던짐으로써 피할 수 있습니다.
언급URL : https://stackoverflow.com/questions/61236989/why-does-mysql-mariadb-consider-a-string-uuid-equal-to-integer
반응형
'source' 카테고리의 다른 글
react-native: 명령을 찾을 수 없습니다. (0) | 2023.07.23 |
---|---|
Python 및 Scrapy 및 MariaDB/MYSQL 데이터베이스로 스크랩된 데이터 가져오기 시도 (0) | 2023.07.23 |
WebFlux에서 OAuth2의 작업 예가 있습니까? (0) | 2023.07.23 |
Spring Kafka 통합 테스트 하이 워터마크 파일에 쓰는 중 오류 발생 (0) | 2023.07.23 |
OOP를 제외하고, 왜 C++이 C보다 나은가요? (0) | 2023.07.23 |