Как использовать оператор SQL Order By для сортировки результатов без учета регистра? - PullRequest
130 голосов
/ 10 марта 2010

У меня есть база данных SQLite, которую я пытаюсь отсортировать по алфавиту. Проблема в том, что SQLite, похоже, не учитывает A = a во время сортировки, поэтому я получаю следующие результаты:

A В С T б с г

Я хочу получить:

A б В С с г T

Какую особую вещь SQL нужно сделать, о которой я не знаю?

SELECT * FROM NOTES ORDER BY title

Ответы [ 3 ]

231 голосов
/ 10 марта 2010

Вы также можете сделать ORDER BY TITLE COLLATE NOCASE.

Редактировать: если вам нужно указать ASC или DESC, добавьте это после NOCASE как

ORDER BY TITLE COLLATE NOCASE ASC

или

ORDER BY TITLE COLLATE NOCASE DESC

92 голосов
/ 10 марта 2010

Вы можете просто преобразовать все в нижний регистр в целях сортировки:

SELECT * FROM NOTES ORDER BY LOWER(title);

Если вы хотите удостовериться, что заглавные по-прежнему опережают строчные, просто добавьте это как вторичную сортировку:

SELECT * FROM NOTES ORDER BY LOWER(title), title;
0 голосов
/ 31 августа 2016
SELECT * FROM NOTES ORDER BY UPPER(title)              
...