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 子句使用两个字段:
Language IS NULL OR Language=''.这是一个布尔表达式(在SQLite中导致0(false)或1(true)),与...相同(Language IS NULL) OR (Language='')
当第一个字段具有相同的结果时,使用第二个字段:Language.
这样,无论何时Language是NULL空还是空TEXT,第一个字段都将1依赖于其他结果后的那些结果,进行评估0.然后,第二个字段用于对Language包含内容的所有结果进行排序.
is检查时必须使用运算符null
select * from table1
order by case when Language is null then 1 else 0 end,
Language
Run Code Online (Sandbox Code Playgroud)