• sql中NULL的问题


    sql中NULL的问题

     
    今天一不小心在sql中写出以下脚本
    select defaultPositionId from TableName where UserId=1100528 and defaultPositionId =null 
    执行之后大惊怎么没有结果,使用select * from tableName 该列确实为null怎么查补出来难道自己人品问题于是自己又写了以下判断
     
    if(null=null)
    BEgin
      print 'fff'
    end 
    else
    begin
      print 'gggg'
    end  www.2cto.com  
    输出结果如下:


     
    无语难道null与null还有区别。
    于是找搜索引擎,在sql中null是一种数据类型,null不能与任何列或者变量使用"="或者"!="去比较
    判断某列或者变量为null是只能用is (not) null 去判断这样他的返回值才是true或者false
     
           关于null的运用
    NULL值与索引
    如果一个列中有NULL值,那么不可以在这个列上建唯一索引,可以建立非唯一索引;但是如果一个字段有很多行有NULL值,那么在这个字段上建索引效果不佳。所以建议不在在一个频繁出现NULL值的字段上建索引(有待证实)。
     
    NULL与排序
    NULL参与排序时总是作为最小值存在,即ORDER BY COL ASC时COL为NULL的行在最前面,反之在最后面。
    附注:t-sql中三个关于NULL的函数:
    ISNULL(check_expression, replacement_value)
    check_expression 与 replacement_value 数据类型必须一致 
    如果 check_expression 为 NULL,则返回 replacement_value 
    如果 check_expression 不为 NULL,则返回 check_expression
       www.2cto.com  
    NULLIF 用于检查两个表达式,语法:
    NULLIF(expression, expression)
    如果两个 expression 相等,则返回 NULL,该 NULL 为第一个 expression 的数据类型 
    如果两个 expression 不相等,则返回第一个 expression
     
    COALESCE()函数可以接受一系列的值,如果列表中所有项都为空(null),那么只使用一个值。然后,它将返回第一个非空值。这一技巧描述了创造性使用SQL Server 中COALESCE()函数的两种方法。
  • 相关阅读:
    Net使用RdKafka引发异常RdKafka.Internal.LibRdKafka 的类型初始值设定项引发异常
    mysql数据与Hadoop之间导入导出之Sqoop实例
    如何将mysql数据导入Hadoop之Sqoop安装
    常见的几种Flume日志收集场景实战
    Restful服务应不应该在URI中加入版本号
    sudo
    shell实现SSH自动登陆
    使用465端口加密发邮件
    linux下c++如何输入不回显
    tmp
  • 原文地址:https://www.cnblogs.com/hy928302776/p/3252255.html
Copyright © 2020-2023  润新知