zoukankan      html  css  js  c++  java
  • 关于数据库NULL值的几个问题思考

    最近在写项目,拼接SQL时,发现好多关于NULL值的问题,现在把这些问题整理出来,以供日后参考。

    对于Oracle数据库:

    一、排序

    Oracle对于null值的排序,有一个函数可以进行操作: 在默认情况下,Oracle将null值定义为最大值,所以在排序时,null值总是位于最前(DESC)或最后(ASC);

    好在Oracle提供了一个可以自定义的null,使用nulls first或者nulls last,用户可以对null值的排序位置进行调控,且此函数不受DESC或ASC的影响;

    二、条件查询

    在使用动态SQL进行条件查询时,如果一个列中包含有null值的话,当使用=或者!=等操作符进行筛选时,null是不包含在筛选结果中的。

    select * from table where state != 1

    这句SQL查询的结果中,是不包含state=null的情况的。

    而且,在对state为null的查询,是不能使用state=null来查的,必须使用state is null来查询。

    三、函数IN和NOT IN的情况

    这两个函数对于null值都不感冒,但是处理的方式有点区别:

    1、对于IN函数,当条件集中包含NULL时,函数只对非NULL值进行匹配,对于NULL值是视而不见的,所以查询结果并不是预期结果;

      SELECT * FROM test WHERE type IN ('2', NULL );

    2、对于NOT IN函数,当条件集中包含NULL时,查询结果必为空集,没有任何匹配出现;

      SELECT * FROM test WHERE type NOT IN ('2', NULL );

  • 相关阅读:
    2020软件工程作业05
    2020软件工程作业00--问题清单
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    软件工程个人作业06
    软件工程作业04
    软件工程作业05
    软件工称作业03
    2020软件工程作业02
  • 原文地址:https://www.cnblogs.com/SummerinShire/p/6400961.html
Copyright © 2011-2022 走看看