• 开创生态文明新时代 绘出美丽中国新图景 2018-04-26
  • 贵州桐梓:困难群众打工差点错过“移民搬迁”之后 2018-04-26
  • 国乒男女队出征第54届世乒赛“盼天晴” 2018-04-26
  • “鲶鱼”初显 “自主三强”以合作应“开放”? 2018-04-25
  • 第二批慈善组织互联网募捐信息平台遴选结果公示 2018-04-25
  • 国乒男女队出征第54届世乒赛“盼天晴” 2018-04-24
  • 崔世安会见吴政隆 双方就推进苏澳合作深入交谈 2018-04-24
  • 音乐剧《朝暮有情人》演绎港穗两地三代情 2018-04-24
  • 3月70城房价环比涨幅扩大 2018-04-24
  • 国际油价4月19日涨跌互现 2018-04-23
  • 南平市人民防空办公室成立武夷新区人防办事处 2018-04-23
  • 劳动者合法权利也不可“任性”滥用 2018-04-22
  • SKT招募绝地求生队员 网友迫切看到faker与韦神对枪! 2018-04-22
  • 送别余光中:诗人虽远行,乡愁永流传 2018-04-22
  • 连超模肯豆都“爱不释脚”的穆勒鞋 你不了解一下?|穆勒鞋|肯豆|超模 2018-04-22
  • 【mysql教程】MySQL NULL 值处理

    栏目: mysql 发布于: 2014-11-26 20:05:51

    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运算符。


    在命令提示符中使用 NULL 值

    以下实例中假设数据库 TUTORIALS 中的表 tcount_tbl 含有两列 tutorial_author 和 tutorial_count, tutorial_count 中设置插入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)
    

    使用PHP脚本处理 NULL 值

    PHP脚本中你可以在 if...else 语句来处理变量是否为空,并生成相应的条件语句。

    以下实例中PHP设置了$tutorial_count变量,然后使用该变量与数据表中的 tutorial_count 字段进行比较:

    <?php
    $dbhost = 'localhost:3036';
    $dbuser = 'root';
    $dbpass = 'rootpassword';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
      die('Could not connect: ' . mysql_error());
    }
    if( isset($tutorial_count ))
    {
       $sql = 'SELECT tutorial_author, tutorial_count
               FROM  tcount_tbl
               WHERE tutorial_count = $tutorial_count';
    }
    else
    {
       $sql = 'SELECT tutorial_author, tutorial_count
               FROM  tcount_tbl
               WHERE tutorial_count IS $tutorial_count';
    }
    
    mysql_select_db('TUTORIALS');
    $retval = mysql_query( $sql, $conn );
    if(! $retval )
    {
      die('Could not get data: ' . mysql_error());
    }
    while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
    {
        echo "Author:{$row['tutorial_author']}  <br> ".
             "Count: {$row['tutorial_count']} <br> ".
             "--------------------------------<br>";
    } 
    echo "Fetched data successfully\n";
    mysql_close($conn);
    ?>
    

    本文转载自:w3cschool
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:【mysql教程】MySQL NULL 值处理
    IT技术书籍推荐:
    疯狂Java讲义(第3版)
    疯狂Java讲义(第3版)
    李刚 (作者)
    《疯狂Java讲义(第3版)》内容简介:《疯狂Java讲义(第3版)》是《疯狂Java讲义》的第3版,第3版保持了前两版系统、全面、讲解浅显、细致的特性,全面新增介绍了Java 8的新特性,《疯狂Java讲义(第3版)》大部分示例程序都采用Lambda表达式、流式API进行了改写,因此务必使用Java 8的JDK来编译、运行。 《疯狂Java讲义(第3版)》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制。覆盖了java.lang、java.util、java.text、java.io和java.nio、java.sql、java.awt、javax.swing包下绝大部分类和接口?!斗杩馢ava讲义(第3版)》全面介绍了Java 8的新的接口语法、Lambda表达式、方法引用、构造器引用、函数式编程、流式编程、新的日期、时间API、并行支持、改进的类型推断、重复注解、JDBC 4.2新特性等新特性。