zoukankan      html  css  js  c++  java
  • SQL之总结(四)---null问题的处理

      概述:如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。

               NULL 值的处理方式与其他值不同。

               NULL 用作未知的或不适用的值的占位符。

               注释:无法比较 NULL 和 0;它们是不等价的。

    1.SQL中null值的处理:

       对于null值,不可以使用 ==  或者这些类似的关系符进行处理。

       必须使用:is null 和is not null 进行处理

    2.Is null的使用

       SELECT * from tb_guide where lvlno is null

     

     

    3.SQL 中的Isnull() nvl() isfull() coalesce()的使用方法

    SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder) FROM Products

    在上面的例子中,如果有 "UnitsOnOrder" 值是 NULL,那么结果是 NULL

    微软的 ISNULL() 函数用于规定如何处理 NULL 值。

    NVL(), IFNULL() 和 COALESCE() 函数也可以达到相同的结果。

    在这里,我们希望 NULL 值为 0。

    下面,如果 "UnitsOnOrder" 是 NULL,则不利于计算,因此如果值是 NULL 则 ISNULL() 返回 0。

    SQL Server / MS Access

    SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
    FROM Products
    

    Oracle

    Oracle 没有 ISNULL() 函数。不过,我们可以使用 NVL() 函数达到相同的结果:

    SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
    FROM Products
    

    MySQL

    MySQL 也拥有类似 ISNULL() 的函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。

    在 MySQL 中,我们可以使用 IFNULL() 函数,就像这样:

    SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
    FROM Products
    

    或者我们可以使用 COALESCE() 函数,就像这样:

    SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
    FROM Products
    

      

  • 相关阅读:
    RVM Ruby 版本管理器的删除 Gatling
    JWT 构建Rails API 授权登录
    Linux grep根据关键字匹配前后几行
    bootstrap-table 常用总结-树形结构
    linux 下jq的使用
    SHELL脚本获取域名对应的IP地址
    golang将切片或数组进行分组
    linux的统计实现
    Linux:“awk”命令的妙用
    rails 上传文件
  • 原文地址:https://www.cnblogs.com/lovefan/p/3386686.html
Copyright © 2011-2022 走看看