У меня есть база данных со следующими данными в столбце «Имя»:
![enter image description here](https://i.stack.imgur.com/DtWA1.png)
Однако выполнение следующего запроса возвращает неверные результаты:
SELECT `e`.`Id`, `e`.`Name`
FROM `Regions` AS `e`
WHERE (LOCATE('s', `e`.`Name`) > 0)
Возвращает:
Calgary Northeast
Test Location
Calgary West
Однако, это не возвращение "Южного Британской Колумбии", который имеет s
в начале. Согласно документам MariaDB, функция LOCATE
не учитывает регистр (см .: https://mariadb.com/kb/en/library/locate/),, поэтому я ожидаю, что "Southern BC" и "Calgary South" будут отображаться в результатах. Ясно, что мой запрос выполняет сравнение с учетом регистра, но я не знаю почему. Все мои параметры сортировки установлены на utf8mb4_general_ci
везде, где я проверял.
SELECT TABLE_SCHEMA
, TABLE_NAME
, TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME ='Regions';
возвращает utf8mb4_general_ci
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
возврат
collation_connection utf8mb4_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_general_ci
Я бегу 10.3.10-MariaDB-1:10.3.10+maria~bionic-log
Есть идеи об этом поведении?