这是SQLite的正确语法,使空值出现在最后吗?

Sha*_*aun 3 sqlite null

select * from table1
order by case Language when null then 1 else 0 end, Language
Run Code Online (Sandbox Code Playgroud)

无论我使用哪种方式,它总是首先显示空值.是否有一种标准方法允许非空值采用排序优先级?

多谢你们

LS_*_*ᴅᴇᴠ 15

你不需要WHEN:

SELECT * FROM table1
ORDER BY Language IS NULL, Language
Run Code Online (Sandbox Code Playgroud)

运算符IS将在true时返回1,否则返回0(运算符).

编辑:处理空TEXT,也:

SELECT * FROM table1
ORDER BY Language IS NULL OR Language='', Language
Run Code Online (Sandbox Code Playgroud)

ORDER BY 子句使用两个字段:

  1. Language IS NULL OR Language=''.这是一个布尔表达式(在SQLite中导致0(false)或1(true)),与...相同(Language IS NULL) OR (Language='')

  2. 当第一个字段具有相同的结果时,使用第二个字段:Language.

这样,无论何时LanguageNULL空还是空TEXT,第一个字段都将1依赖于其他结果后的那些结果,进行评估0.然后,第二个字段用于对Language包含内容的所有结果进行排序.


jue*_*n d 5

is检查时必须使用运算符null

select * from table1
order by case when Language is null then 1 else 0 end, 
         Language
Run Code Online (Sandbox Code Playgroud)