标签归档:null专题

mssql sql server 数据库中null 转换为 0的方法分享


摘要:
下文详细讲述sqlserver中null值转换为0的方法分享,如下所示:
实验环境:sql server 2008 R2


null值转化为0的方法:
在sqlserver中NULL值转换为0的方法采用ISNULL函数进行转换处理,具体的语法如下所示:

    ISNULL(check_expression,replacement_value)      

—参数说明—-
check_expression:
待检查表达式,此处表达式可以为列名,变量名 等。
replacement_value:
当check_expression为NULL时,使用replacement_value表达式替换

注意事项:
check_expression和replacement_value必须具有相同的数据类型


ISNULL举例应用

  ---当列名为NULL值时,使用0进行替换
  select isnull([列名],0) from [数据表名称]

mssql sqlserver null值你知多少?


摘要:
下文全面分析sqlserver中的null值,如下所示:
实验环境:sql server 2008 R2



sqlserver中的NULL值,在sqlserver中代表空值,当我们对NULL值进行逻辑比较时,会出现”UNKNOWN”这个值。(sql逻辑运算一共有TRUE FALSE UNKNOWN三个返回值)。

sql逻辑判断中,对NULL的处理会返回UNKNOWN,这个逻辑结果及不会被if 处理也不会被else处理。
例:

 
  select * from [maomao365.com]
    where  [age] > 8 
  /*
   当age值存在值,并且大于8时,则返回true,并返回相应行记录
 */
  select * from [maomao365.com]
    where  [age] <= 8 
  /*
   当age值存在值,并且小于等于8时,则返回true,并返回相应行记录
 */
  ------------------------------------------------------------------------------------
  ---此处应注意,当age为null时,以上两个语句的查询条件都无法返回
  ---因为age值为null时,同8进行对比返回的值为UNKNOWN,永远都无法返回true
  ------------------------------------------------------------------------------------

 ---例2:
  declare @maomao varchar(20)
  if @maomao ='blog'
  begin
    print '此处会剔除逻辑运算为false和UNKNOWN的数值'
  end
  else
  begin
    print '此处会剔除逻辑运算为true和UNKNOWN的数值'
 end
 go 

NULL值的正确处理方法:应使用 is null 或 is not null

if @maomao is null
 begin
  print '值为NULL'
 end
 go
 select * from [maomao365.com]
    where  [age]  is  null  

mssql sqlserver null值带来的危害


摘要:
下文将讲述平时在数据库中遇见数据值为null的可能带来的陷阱分享给大家,如下所示:
实验环境:sql server 2008 R2



1.数值比对

当一个值为null时,我们进行if比对时,会出现unkown的返回值,稍不注意会出现null漏掉或比对错误的现象发生
例1:
select * from [maomao365.com]
where [列A] <> [列B]
—以上sql脚本不会显示出 [列A] 为null [列B]为其它任意值的数据
不会显示出 [列B] 为null [列A]为其它任意值的数据

例2:
SELECT * FROM [maomao365.com] where [列A] !=’测试信息’
—以上sql语句无法查询出 [列A] 为null的值


对null值的判断,必须使用 is null 作为判断
—错误写法
if @a =null
begin
—*
end
—正确写法:
if @a is null
begin
print ‘null正确判断方法’
end



2.数据统计

select count([列A]) from [maomao365.com]
—以上统计脚本会自动忽略掉[列A]所占用的行