SQlite按个案查询

DAr*_*rkO 7 sql sqlite android sql-order-by

我有一个表,其中包含列中的两种类型的文本.第一种是电子邮件地址字符串(ex 222@dsad.com),第二种是人名(John Doe)

我正在使用此查询来对数据进行排序,以便首先显示没有@char的行,然后显示具有它的行:

  SELECT * 
    FROM Name 
ORDER BY CASE 
           WHEN displayName LIKE '%@%' THEN 1 
           ELSE 2 
         END
Run Code Online (Sandbox Code Playgroud)

所以我无法做的是让案例按升序排序,以便我按照按字母升序排序的电子邮件后面的字母升序排序.

OMG*_*ies 15

使用:

  SELECT n.* 
    FROM NAME n
ORDER BY CASE 
           WHEN displayName LIKE '%@%' THEN 1 
           ELSE 2 
         END, n.displayname COLLATE NOCASE
Run Code Online (Sandbox Code Playgroud)

ORDER BY子句支持多个列,但优先级从左到右读取.因此,displayname其中带有"@" 的值位于顶部,然后按displayname每个分组中的值排序(基于CASE语句).

您需要查看使用COLLATE运算符进行不区分大小写的比较.