Почему две строки в Mysql одинаковы? - PullRequest
2 голосов
/ 07 марта 2019

У меня проблема в MySQL: 'amelie' и 'amélie' одинаковы в mysql?

Когда я использую distinct для таблицы, они совпадают.

Я использую MySQL 8.0.15 , и нахожу две строки одинаковыми.Я знаю, что это проблема языка, но я не знаю, как ее решить?Пожалуйста, дайте мне совет?Ниже приведены данные:

CREATE TABLE test1 (aa varchar(255) DEFAULT NULL)
ENGINE = INNODB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_0900_ai_ci;

SET NAMES 'utf8';
-----------------------------------------------
INSERT INTO test1(aa) VALUES
('amelie'),
('amélie');

------------------------------------------------

SELECT DISTINCT aa FROM test1;

1 Ответ

1 голос
/ 07 марта 2019

Это, скорее всего, поведение КОЛЛЕКЦИИ, которую вы выберете.Вы можете обойти это поведение по умолчанию, используя COLLATE utf8mb4_bin:

SELECT DISTINCT aa COLLATE utf8mb4_bin FROM test1;

или используя BINARY:

SELECT DISTINCT(BINARY aa) as aa FROM test1;

Вы также можете создать таблицу с двоичным кодом COLLATE:

CREATE TABLE test1 (aa varchar(255) DEFAULT NULL) ENGINE = INNODB, CHARACTER SET utf8mb4, COLLATE utf8mb4_bin;
...