zoukankan      html  css  js  c++  java
  • 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

    输出结果如下:

    无语难道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
     

    NULLIF 用于检查两个表达式,语法:
    NULLIF(expression, expression)

    如果两个 expression 相等,则返回 NULL,该 NULL 为第一个 expression 的数据类型 
    如果两个 expression 不相等,则返回第一个 expression

    COALESCE()函数可以接受一系列的值,如果列表中所有项都为空(null),那么只使用一个值。然后,它将返回第一个非空值。这一技巧描述了创造性使用SQL Server 中COALESCE()函数的两种方法。

    帮助连接:http://msdn.microsoft.com/zh-cn/library/ms172138.aspx

  • 相关阅读:
    数据库创建标量值函数
    大并发大数据量请求的处理方法
    模态对话框 bootstrap-modal.js
    创建测试表,批量插入数据的存储过程,分页存储过程
    android:强大的图片下载和缓存库Picasso
    压缩图片链接
    Css3:transform变形
    css中 padding属性的数值赋予顺序为
    Css3颜色值RGBA得表示方式
    css3 box-shadow让我们实现图层阴影效果
  • 原文地址:https://www.cnblogs.com/Minghao_HU/p/2697085.html
Copyright © 2011-2022 走看看