Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Orden de consulta de SQlite por caso

Tengo una tabla que contiene 2 tipos de texto dentro de una columna. El primer tipo es una cadena de correo electrónico (ex 222@dsad.com) y el segundo es un nombre de personas (John Doe)

Estoy utilizando esta consulta para obtener los datos ordenados por lo que primero se muestran las filas que no tienen el @ char y luego los que sí lo tienen:

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

Así que lo que soy incapaz de hacer es conseguir que los casos sean ordenados ascendiendo de modo que tenga los nombres ordenados por letra ascendiendo después de los correos electrónicos ordenados por letra ascendente.

  • Compruebe si la base de datos está vacía
  • ¿Hay alguna forma de implementar la búsqueda de texto completo (FTS) en SQlite de la plataforma Android?
  • Cómo obtener el valor de la base de datos en una matriz String en android (sqlite Database)
  • Cómo imprimir la consulta ejecutada por el método query () de android
  • Android actualización SQLite DB esquema?
  • ¿Cómo conectarse a SQLite DB con contraseña con OrmLite?
  • Android: Diseño de uno-a-muchos de SQLite
  • SQLiteOpenHelper vs ContentProvider
  • 2 Solutions collect form web for “Orden de consulta de SQlite por caso”

    Utilizar:

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

    La cláusula ORDER BY soporta más de una columna, pero la prioridad se lee de izquierda a derecha. Así que los valores displayname con un "@" en ellos están en la parte superior, y luego ordenados por el valor displayname en que cada agrupación (basado en la sentencia CASE).

    Debe buscar utilizando el operador COLLATE para la comparación de mayúsculas y minúsculas.

    Básicamente, se vería así:

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

    Sólo agrega un segundo elemento para ordenar en la lista. Esto ordenará primero por la columna 1 o 2 y luego ordenará esos resultados por el nombre real.

    Si su agrupación no permite el tipo que desea, puede modificar el ORDER BY ligeramente para acomodar esto así:

     Select * FROM Name Order by case when displayName LIKE '%@%' then 1 else 2 end, UPPER(displayName) 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.