is null 查看列数据为空 select*from lrb where lrid is null ISNULL
使用指定的替换值替换 NULL。 语法 参数 将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。 replacement_value 在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。 返回类型 注释 示例 USE pubs 下面是结果集: -------------------------- (1 row(s) affected) B. 使用 ISNULL USE pubs 下面是结果集: Title Type Price
有关ISNULL的使用
最近用isnull用的很不爽.看了N次帮助还不太明白, 请问: select isnull(数字,0) as 值 from 表名 这样写是不是 isnull 没有生效呢? 如果列名"数字"无值, 用select还是空值, 并不是显示一个数字 0 出来, 为什么? 难道必须用聚合函数这样写才行吗? select isnull(sum(数字),0) as 值 from 表名 这时若未找到值, 则出来的结果就是 0 了, 为什么? 使用 isnull 还有其它什么限制吗? /////////////////////////////////////////////
你的数字肯定不是null,
可以试试select isnull(null,0) as 值 2 数字字段如果包括 null 则 isnull(数字,0) 结果为0
如果包括 空格 则 isnull(数字,0) 结果为空格 isnull 只用来判断是否有null 3 在SQL中,要特别注意空格不是NULL,空格会当作字符存贮,数字型的数据也不例外。
4 查询分析器执行:
select isnull(null,0) select isnull(null,'被null的字符') select isnull('null','不会出来应为它不是null') select case when null is null then '是null' else '不是null' end select case when 'null' is null then '是null' else '不是null' end 5 這句有問題:
select isnull(sum(数字),0) as 值 from 表名 如果有數字是null則sum(數字)是NULL,則返回值是0 應該寫成; select sum(isnull(数字,0)) as 值 from 表名 6 这样说吧, 我有一个表, 其中一个字段名是 s_z , 类型是 int , auto_id 是自增量
identity , 最大的id号是80, 我在查询分析器中执行
select isnull(s_z,0) as 数字 from 表名 where id>100 这时分析器显示的 "数字" 列下面没有内容, 而我用 select isnull(sum(s_z),0) as 数字 from 表名 where id>100 它这里在 "数字" 列下面显示的值是 0 , 为什么? 7 ISNULL,只會對該字段是null值的起作用
8 select sum(1) from sysobjects where 1=2 它会返回一个null 9 select 1 from sysobjects where 1=2 它什么也不返回如果你要: select isnull((select 1 from sysobjects where 1=2),0) 10
这是因为如果没有符合条件的记录,SUM同样会返回一个值NULL,所以仍然有一个返回值,再用ISNULL,当然会变成0了。你试试不用ISNULL,看看会不会出现一个NULL的返回值!
12
哦, 明白了, 意思是指我用普通的 select 它在没有查找相应的记录时, 根本没有返回任何东东, 而用了 sum
时, 则会返回 null 对吧.
如果是这样, 我如何在普通的 select 没有返回东东的时候将它的值设为 0 呢? 已如同 isnull 的功能那样? 13 “ 我如何在普通的 select 没有返回东东的时候将它的值设为 0 呢?”?我都糊涂了。
select在没有符合条件的记录时什么也不返回,而集合函数一定返回总计结果null,这难道需要“颠覆”吗? |
|