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

    我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

    为了处理这种情况,MySQL提供了三大运算符:

    • IS NULL: 当列的值是NULL,此运算符返回true。
    • IS NOT NULL: 当列的值不为NULL, 运算符返回true。
    • <=>: 比较操作符(不同于=运算符),当比较的的两个值为NULL时返回true。

    关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值

    在MySQL中,NULL值与任何其它值的比较(即使是NULL)永远返回false,即 NULL = NULL 返回false 。

    MySQL中处理NULL使用IS NULL和IS NOT NULL运算符。

     

    实例

    尝试以下实例:

    root@host# mysql -u root -p password;

    Enter password:*******

    mysql> use TUTORIALS;

    Database changed

    mysql> create table tcount_tbl

        -> (

        -> tutorial_author varchar(40) NOT NULL,

        -> tutorial_count  INT

        -> );

    Query OK, 0 rows affected (0.05 sec)

    mysql> INSERT INTO tcount_tbl

        -> (tutorial_author, tutorial_count) values ('mahran', 20);

    mysql> INSERT INTO tcount_tbl

        -> (tutorial_author, tutorial_count) values ('mahnaz', NULL);

    mysql> INSERT INTO tcount_tbl

        -> (tutorial_author, tutorial_count) values ('Jen', NULL);

    mysql> INSERT INTO tcount_tbl

        -> (tutorial_author, tutorial_count) values ('Gill', 20);

     

    mysql> SELECT * from tcount_tbl;

    +-----------------+----------------+

    | tutorial_author | tutorial_count |

    +-----------------+----------------+

    | mahran          |             20 |

    | mahnaz          |           NULL |

    | Jen             |           NULL |

    | Gill            |             20 |

    +-----------------+----------------+

    4 rows in set (0.00 sec)

     

    mysql>

    以下实例中你可以看到 = 和 != 运算符是不起作用的:

    mysql> SELECT * FROM tcount_tbl WHERE tutorial_count = NULL;

    Empty set (0.00 sec)

    mysql> SELECT * FROM tcount_tbl WHERE tutorial_count != NULL;

    Empty set (0.01 sec)

    查找数据表中 tutorial_count 列是否为 NULL,必须使用IS NULL和IS NOT NULL,如下实例:

    mysql> SELECT * FROM tcount_tbl 

        -> WHERE tutorial_count IS NULL;

    +-----------------+----------------+

    | tutorial_author | tutorial_count |

    +-----------------+----------------+

    | mahnaz          |           NULL |

    | Jen             |           NULL |

    +-----------------+----------------+

    2 rows in set (0.00 sec)

    mysql> SELECT * from tcount_tbl 

        -> WHERE tutorial_count IS NOT NULL;

    +-----------------+----------------+

    | tutorial_author | tutorial_count |

    +-----------------+----------------+

    | mahran          |             20 |

    | Gill            |             20 |

    +-----------------+----------------+

    2 rows in set (0.00 sec)

  • 相关阅读:
    Linux常用命令之 查找命令 find —— 细说 -atime,-mtime,-ctime
    centos设置静态ip
    Linux中vim的基本操作
    Linux中/和~的区别
    Linux安装vmtools工具
    关于 [lambda x: x*i for i in range(4)] 理解
    Ubuntu虚拟环境的搭建
    tomcat的中的Apache的apr是个啥东东???
    什么是web资源????
    Handlebars学习第一天
  • 原文地址:https://www.cnblogs.com/liujiaq/p/5643703.html
Copyright © 2011-2022 走看看