Запрос запроса SQlite по отдельности

У меня есть таблица, содержащая 2 типа текста внутри столбца. Первый тип – это строка адреса электронной почты (ex 222@dsad.com), а вторая – имя человека (John Doe)

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

SELECT * FROM Name ORDER BY CASE WHEN displayName LIKE '%@%' THEN 1 ELSE 2 END 

Поэтому то, что я не могу сделать, – это отсортировать сортировку по возрастанию, чтобы у меня были отсортированные по букве письма по возрастанию по электронной почте.

Solutions Collecting From Web of "Запрос запроса SQlite по отдельности"

Использование:

  SELECT n.* FROM NAME n ORDER BY CASE WHEN displayName LIKE '%@%' THEN 1 ELSE 2 END, n.displayname COLLATE NOCASE 

Предложение ORDER BY поддерживает более одного столбца, но приоритет читается слева направо. Значения displayname с «@» в них находятся вверху, а затем упорядочены по значению displayname в каждой группе (на основе оператора CASE).

Вам нужно взглянуть на использование оператора COLLATE для сравнения без учета регистра.

В принципе, это будет выглядеть так:

 Select * FROM Name Order by case when displayName LIKE '%@%' then 1 else 2 end, displayName 

Вы просто добавляете второй элемент для сортировки в список. Сначала это сортируется по столбцу 1 или 2, а затем сортирует результаты по фактическому имени.

Если ваша сортировка не разрешает сортировку, которую вы хотите, вы можете немного изменить ORDER BY, чтобы разместить ее так:

 Select * FROM Name Order by case when displayName LIKE '%@%' then 1 else 2 end, UPPER(displayName)