• MySQL isnull()函数基本指南


    转自:https://www.yiibai.com/mysql/isnull-function.html

    MySQL ISNULL函数简介

    ISNULL函数接受一个参数,并测试该参数是否为NULL。如果参数为NULL,则ISNULL函数返回1,否则返回0

    下面说明了ISNULL函数的语法:

    ISNULL(expr)
    
    SQL

    请考虑以下示例:

    SELECT ISNULL(NULL); -- 1    
    SELECT ISNULL(1);  -- 0
    SELECT ISNULL(1 + NULL); -- 1;
    SELECT ISNULL(1 / 0 ); -- 1;
    
    SQL

    请注意,如果您尝试找到Microsoft SQL Server的ISNULL函数的MySQL替代方法,则应该使用MySQL的IFNULL函数。 因为ISNULL函数在MySQL中与Microsoft SQL Server的ISNULL函数是不同的。

    MySQL ISNULL函数和IS NULL运算符

    ISNULL函数与IS NULL运算符共享一些行为。 例如,如果您将DATE类型的列声明为NOT NULL,则可以使用以下语句查找特殊日期“0000-00-00”

    SELECT 
        *
    FROM
        table_name
    WHERE
        ISNULL(date);
    
    SQL

    请注意,MySQL故意实现此函数来支持ODBC应用程序,因为ODBC不支持特殊日期值'0000-00-00'。或者修改以下值为: sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,官方手册参考: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

    我们来看下面的一个例子。

    首先,创建一个名为special_isnull的新表,如下所示:

    USE testdb;
    drop table if exists special_isnull;
    CREATE TABLE special_isnull (
        start_date DATE default NULL 
    );
    
    SQL

    其次,将一些数据插入到special_isnull表中:

    INSERT INTO special_isnull(start_date) 
    VALUES('2000-01-01'),('0000-00-00'),(NULL);
    
    SQL

    注意:MySQL 5.7 中不允许插入 0000-00-00

    第三步,使用ISNULL函数从special_isnull表查询数据:

    SELECT 
        *
    FROM
        special_isnull
    WHERE
        ISNULL(start_date);
    
    SQL

    执行上面查询语句,得到以下结果 -

    +------------+
    | start_date |
    +------------+
    | NULL       |
    +------------+
    1 row in set
    
    SQL

    查询返回一行,而您可能希望返回一个空结果集。

    当您要取消IS NULL运算符时,可以使用NOT运算符,即IS NOT NULL。 但是,对于ISNULL函数,可以使用!ISNULL

    在本教程中,您已经学习了如何使用MySQL ISNULL函数及其特殊行为来处理NULL值。

    //原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/mysql/isnull-function.html

  • 相关阅读:
    学习MSMQ笔记
    swfobject 2.0 使用(转)
    发现博客园的一个小问题
    4月10日
    NHibernate的一点思考
    最新手机号码正则表达式
    如何在页面完美显示版权符号(转)
    OpenGL由已知控制点绘制模拟曲面地形
    android自定义view[控件重用]时出现“No resource identifier found for attribute *** in package *** ”
    基于ARM的模拟器
  • 原文地址:https://www.cnblogs.com/sharpest/p/13706627.html
Copyright © 2020-2023  润新知