Используя MariaDB 10.0.36, у меня есть пользовательская таблица с сопоставлением utf8_turkish_ci
со столбцом user_login
, в которой хранится имя пользователя, которое также использует сопоставление utf8_turkish_ci
с уникальным индексом.
Насколько я понимаю, оператор select должен быть нечувствительным к регистру, но с определенными именами пользователей это не так.
Например, у меня есть пользователь с логином GoDoIt
Этот оператор не возвращает записей:
SELECT * FROM user WHERE user_login = 'godoit'
Однако это работает:
SELECT * FROM user WHERE user_login = 'GoDoIt'
Я нахожу это страннымпотому что имя пользователя Eric
работает в обоих направлениях.
SELECT * FROM user WHERE user_login = 'eric'
SELECT * FROM user WHERE user_login = 'Eric'
Вернуть тот же результат.Так почему заглавные буквы в середине строки не работают?Я опускаю входное имя пользователя в PHP с помощью tolower
в строке перед отправкой в базу данных, и я полагаю, что этот подход не будет работать с определенными именами пользователей.