Intereting Posts
Как получить последнюю запись от Sqlite? Предложения орфографии дают избыточные значения с помощью android.text.TextWatcher Как разместить два TextView на одной строке в вертикальной компоновке Нарисовать круг на Android MapView Отключить анимацию для тестов в облачных сервисах (программно?) Как реализовать первый запуск, например, приложения для Android Lollipop: например, «Таблицы», «Слайды»? OnClick внутри фрагмента, вызванного активностью Автофинирование макета медиаплеера в андроиде Экспортированная служба не требует разрешения: что это значит? Android JNI, какой текущий рабочий каталог для исполняемого кода C / C ++? Запись перечисления со строкой в ​​парцеллу Могу ли я построить все мои ароматы сборки градиента сразу? Использование navigator.geolocation.getCurrentPosition в WebView на Android 2.0+ (связанный с PhoneGap) Java.lang.RuntimeException: может создаваться только один Looper за поток Android NullPointerException в $ Proxy0.equals

Запрос запроса 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)