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

这是SQLite使空值最后出现的正确语法吗?,sqlite,null,Sqlite,Null,无论我用哪种方式处理它,它总是首先显示空值。是否有允许非空值优先排序的标准方法 谢谢大家当检查null select * from table1 order by case Language when null then 1 else 0 end, Language 当发生以下情况时,您不需要: select * from table1 order by case when Language is null then 1 else 0 end, Language 运算符为

无论我用哪种方式处理它,它总是首先显示空值。是否有允许非空值优先排序的标准方法


谢谢大家

当检查
null

select * from table1
order by case Language when null then 1 else 0 end, Language

当发生以下情况时,您不需要

select * from table1
order by case when Language is null then 1 else 0 end, 
         Language
运算符
将在为真时返回1,否则返回0()

编辑:处理空的
文本
,同时:

SELECT * FROM table1
ORDER BY Language IS NULL, Language
orderby
子句使用两个字段:

  • 语言为空或语言=“”
    。这是一个布尔表达式(在SQLite中导致
    0
    (false)或
    1
    (true),与
    (语言为NULL)或(语言=“”)

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


  • 这样,每当
    语言
    文本
    为空时,第一个字段将为
    1
    ,在其他结果之后依赖这些结果,计算结果为
    0
    。然后,第二个字段用于对
    语言
    中包含内容的所有结果进行排序。

    这是LS\u dev对联合的回答的扩展。这不是一个好方法,但我想不出任何其他方法来实现它,因为

    如果选择是复合选择,则不是输出列别名的ORDER BY表达式必须与用作输出列的表达式完全相同


    谢谢各位。这就是我所想的,但它仍然会首先向我的数据网格中吐出空值。我的表格有一行是法语,5行是英语,几百行是空的。从上到下,空值首先显示,然后是英语,然后是法语,而它应该是英语,法语,然后是空值。我的查询是SELECT*FROM table1 ORDER BY LANGURE为NULL,LANGURE-这是查询的正确结果吗?很好的一点-我尝试了:SELECT*FROM songs ORDER BY CASE当LANGURE为NULL或LANGURE=”“时,则0 ELSE 1 END显示NULL,英语,法语-与您的想法完全相反。您确定要处理的是
    NULL
    ?这些值不是零长度
    TEXT
    ?您的查询应该是:
    SELECT*FROM songs ORDER BY Language为NULL或Language='',LanguageThsnkd LS_dev-这很有效。你介意带我看看它在做什么吗?我看不出它所说的和结果之间的联系。
    
    SELECT * FROM table1
    ORDER BY Language IS NULL OR Language='', Language
    
    select * from (
        SELECT * FROM table1 -- but this select can have union in it
    ) ORDER BY Language IS NULL or Language = '', Language