У меня проблема в том, что я возвращаю слишком много строк с помощью оператора select. Я ограничиваю часть where, но MariaDB игнорирует мое сравнение, если значения в столбце содержат специальные символы.
В следующем примере я вставил две строки в таблицу.
- row содержит " André »- последний символ этого имени -« é »(U + 00E9).
- строка содержит« Andre »- последний символ этого имени:« e . "(U + 0065).
CREATE TABLE `name_test` (`firstname` varchar(40) ) ENGINE=InnoDB AUTO_INCREMENT=48531 DEFAULT CHARSET=utf8mb4;
insert into name_test (firstname) values ('André');
insert into name_test (firstname) values ('Andre');
select * from name_test where firstname = 'André';
firstname
=========
André
Andre
select * from name_test where firstname = 'Andre';
firstname
=========
André
Andre
SHOW SESSION VARIABLES LIKE 'character_set%';
Variable_name Value
========================== =====
character_set_client utf8
character_set_connection utf8
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8
character_set_server utf8mb4
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
select 'Andrée' = 'Andree';
'Andrée' = 'Andree'
===================
1
SET collation_connection = utf8mb4_bin;
select 'Andrée' = 'Andree';
'Andrée' = 'Andree'
===================
0
select * from name_test where firstname = 'André';
firstname
=========
André
Andre
SHOW SESSION VARIABLES where variable_name like 'version%';
Variable_name Value
=========================== ================================
version 10.0.38-MariaDB-0ubuntu0.16.04.1
version_comment Ubuntu 16.04
version_compile_machine x86_64
version_compile_os debian-linux-gnu
version_malloc_library bundled jemalloc
почему я получаю две строки, возвращаемые для операторов select, а не только одну?
Есть ли другой оператор сравнения, кроме" = "?