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

  • 相关阅读:
    A1015. Reversible Primes (20)
    A1024. Palindromic Number (25)
    A1023. Have Fun with Numbers (20)
    B1017. A除以B (20)
    A1059. Prime Factors (25)
    阵列命令
    工具面板
    圆角与镜像命令
    拉伸与缩放命令
    autium designer
  • 原文地址:https://www.cnblogs.com/velscode/p/10576289.html
Copyright © 2011-2022 走看看