Многие считают, что сортировка текста в SQL всегда происходит просто — от A до Z. Но это не всегда так.
В зависимости от СУБД и настроек сортировки (collation), ORDER BY может учитывать регистр символов.
Например, вместо привычного порядка:
apple
banana
cherry
вы можете получить:
Apple
Banana
apple
banana
Хотя слова одинаковые, порядок отличается.
Почему так происходит? Некоторые базы данных рассматривают прописные и строчные буквы как разные символы при сортировке, поэтому слова с заглавной буквы могут отображаться раньше слов со строчной.
Как отключить чувствительность к регистру? В SQLite для этого можно использовать
COLLATE NOCASE:SELECT *
FROM users
ORDER BY name COLLATE NOCASE;
Так SQL будет сортировать значения без учёта регистра, не изменяя сами данные.
Если результаты
ORDER BY выглядят странно, первым делом проверьте настройки collation — именно они часто определяют, как база данных сравнивает и сортирует текст.👉 @SQLPortal
