20080422 sql null 排序 http://www.shengfang.org select * from table where age >= 10 or age < 10 我们知道,当age为null时,上面的sql语句并不能查处那一行,因为null和10比较结果为unkonwn, 如果直接比较的结果是unknown,又如何排序呢? --------------------------------------------- 改成這樣: select * from table where isnull(age,0) >= 10 or isnull(age,0) < 10
建议用这条语句:select * from table where age>= 10 or isnull(age,0) < 10 或则是select * from table where age>= 10 or (case when age is null then 1 else 0 end ) < 10 order by (case when age is null then 0 end),age 呵呵,select * from table 取说有的数据,不管排序与否,显示所有 select * from table where age>= 10 or age < 10,筛选的时候由于null数值,不能判断被排除了,所以没有被显示出来 怎样让NULL正序排序排到最后 TABLE 使用SELECT *FROM TABLE ORDER BY ID 不使用DESC 得到结果: ID NUM1 NUM2 1 10 20 2 20 30 3 30 40 NULL 40 50 10 回复次数:8 第1个回答 order by (case when id is null then 9000 else id)) 空值 空 (NULL) 值表示数值未知。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。 空值通常表示未知、不可用或将在以后添加的数据。例如,客户的中间名首字母在客户下定单时可能不知道。 下面是有关空值的一些信息: 若要测试查询中的空值,请在 WHERE 子句中使用 IS NULL 或 IS NOT NULL。 在 SQL 查询分析器中查看查询结果时,空值在结果集内显示为 (null)。 可通过以下方法在列中插入空值:在 INSERT 或 UPDATE 语句中显式声明 NULL,或不使此列进入 INSERT 语句,或使用 ALTER TABLE 语句在现有表中新添一列。 不能将空值用于区分表中两行所需的信息(例如,外键或主键)。 在程序代码中,可以检查空值以便只在具有有效(或非空)数据的行上进行某些计算。例如,报表可以只打印社会安全列中数据不为空的列。执行计算时消除空值很重要,因为如果包含空值列,某些计算(如平均值)会不准确。 如果数据中可能包含空值,创建查询或数据修改语句消除空值或将空值转换成其它值是一个好办法(如果不想在数据中出现空值)。 重要 为了减少对已有查询或报表的维护和可能的影响,建议尽量少使用空值。对查询和数据修改语句进行规划,使空值的影响降到最小。 如果数据出现空值,则逻辑运算符和比较运算符有可能返回 TRUE 或 FALSE 以外的第三种结果 UNKNOWN。需要三值逻辑是导致许多应用程序出错之源。下面这些表概括了引入空值比较的效果。 下表显示将 AND 运算符应用到两个布尔操作数的结果。 AND TRUE UNKNOWN FALSE TRUE TRUE UNKNOWN FALSE UNKNOWN UNKNOWN UNKNOWN FALSE FALSE FALSE FALSE FALSE 下表显示将 OR 运算符应用到两个布尔操作数的结果。 OR TRUE UNKNOWN FALSE TRUE TRUE TRUE TRUE UNKNOWN TRUE UNKNOWN UNKNOWN FALSE TRUE UNKNOWN FALSE 下表显示 NOT 运算符求反或反转方式,以及布尔运算符的结果。 应用了 NOT 运算符的布尔表达式 取值为 TRUE FALSE UNKNOWN UNKNOWN FALSE TRUE SQL-92 标准引入了关键字 IS NULL 和 IS NOT NULL 来测试空值。 应用了 IS NULL 运算符的布尔表达式 取值为 应用了 IS NOT NULL 运算符的布尔表达式 取值为 TRUE FALSE TRUE TRUE NULL TRUE NULL FALSE FALSE FALSE FALSE TRUE Transact-SQL 还提供扩展空值处理。如果 ANSI_NULLS 选项设为关,则空值之间的比较(如 NULL = NULL)等于 TRUE。空值与任何其它数据类型之间的比较等于 FALSE。 字体:大 中 小 |