今天在写存储过程的时候踩了个小坑,这里记录一下

错误的判断

code

CREATE DEFINER=`PING`@`%` PROCEDURE `test`()
BEGIN
    
    #错误的判断
    if "344085057" != null then 
        select "344085057 != null";
    else
        select "null 不能直接用=和!=比较";
    end if;
    
    
    CASE null
        WHEN null THEN
            select "null = null";
        ELSE
            select 'null 不能直接用=和!=比较';
    END CASE;
    #错误的判断
END

输出

null 不能直接用=和!=比较
null 不能直接用=和!=比较

正确的判断

方法一code

CREATE DEFINER=`PING`@`%` PROCEDURE `test`()
BEGIN
    
    #正确的判断
    if "344085057" is not null then 
        select "344085057 is not null";
    else
        select "null 比较 用is null和is not null";
    end if;
    
    
    CASE 
        WHEN null is null THEN
            select "null is null";
        ELSE
            select 'null 比较 用is null和is not null';
    END CASE;
    #正确的判断
END

输出

344085057 is not null
null is null

方法二code

CREATE DEFINER=`PING`@`%` PROCEDURE `test`()
BEGIN
    
    #正确的判断
    if "344085057" != ifnull(null,"") then 
        select "344085057 != null";
    else
        select "null 不能直接用=和!=比较";
    end if;
    
    
    CASE ifnull(null,"")
        WHEN ifnull(null,"") THEN
            select "null = null";
        ELSE
            select 'null 不能直接用=和!=比较';
    END CASE;
    #正确的判断
END

输出

344085057 != null
null = null

null.png


版权声明:本文为原创文章,版权归 吾爱博客 所有,转载请联系博主获得授权!
本文地址:https://www.52bd.net/database/66.html

发表评论

正在加载 Emoji
×