zoukankan      html  css  js  c++  java
  • 空值的处理

    概述

    • 空值是其值不知道、不确定、不存在的值
    • 数据库中有了空值,会影响许多方面,如聚集函数预算的正确性,不能参与算数、比较或逻辑运算等

    例如:

    SELECT * FROM SC
    +----------------+------------------+-----------------+
    | NAME           | COURSE           | SCORE           |
    +----------------+------------------+-----------------+
    | Tom            | Math             |             100 |
    | David          | Math             |              50 |
    | Andy           | Math             |                 |
    +----------------+------------------+-----------------+
    

    其中Andy同学的分数是空值,那么此时计算Math平均分是多少呢?

    以前,很多DBMS将空值按默认值处理,比如数字被处理成0,引发计算错误。

    在现行SQL标准和流行DBMS中,空值被用一种特殊的符号Null来标记。

    判断空值

    空值检测 is [not] null

    SELECT * FROM sc WHERE score is null
    +----------------+------------------+-----------------+
    | NAME           | COURSE           | SCORE           |
    +----------------+------------------+-----------------+
    | Andy           | Math             |                 |
    +----------------+------------------+-----------------+
    

    注:不能写成 score=null,空值是不能进行运算的

    现行DBMS空值处理小结

    • is [not] null外,空值不满足任何查找条件
    • 如果null参与算术运算,则该算术表达式的值为null
    • 如果null参与比较运算,则结果可视为false。在SQL-92中可看成unknown
    • 如果null参与聚集运算,则除count(*)之外其他聚集函数都忽略null

    示例1

    SELECT AVG(score) FROM SC
    +----------------------+
    | AVG(score)           |
    +----------------------+
    | 75.0000              |
    +----------------------+
    

    这里,Andy的分数被聚集函数AVG忽略

    示例2

    SELECT COUNT(*) FROM SC
    +--------------------+
    | COUNT(*)           |
    +--------------------+
    | 3                  |
    +--------------------+
    
    SELECT COUNT(SCORE) FROM SC
    +------------------------+
    | COUNT(SCORE)           |
    +------------------------+
    | 2                      |
    +------------------------+
    

    可以看到,除了COUNT(*)之外即使是COUNT(score)也忽略了null

  • 相关阅读:
    8.ps输出属性-----状态
    洛谷P1057 传球游戏
    动态规划
    洛谷P1192 台阶问题
    最大公约数和最小公倍数
    C++ memcpy()函数用法
    next_permutation(a,a+n)
    std::ios::sync_with_stdio(false);
    让计算机很快地求出a^b%c;
    洛谷P1433 吃奶酪
  • 原文地址:https://www.cnblogs.com/velscode/p/10576289.html
Copyright © 2011-2022 走看看