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