zoukankan      html  css  js  c++  java
  • MySQL函数

      MySQL 的逻辑表达式为真,返回1,为假,返回0;1代表true,0代表false;

      -- IF(expr1[bool类型], expr2, expr3)

        如果 expr1 的值为 true(不为 0 或 null),则返回 expr2,否则返回 expr3。类似于 Java 的三元运算符,oracle 的 NVL2 函数。 

    SELECT IF(0, 1, 2); SELECT IF(null, 1, 2); SELECT IF(1 / 0, 1, 2);
    --> 2; --> 2; --> 2;

     

      -- IFNULL(expr1[bool类型], expr2)

      如果 expr1 的值为不为 null,则返回 expr1,否则返回 expr2。IFNULL()的返回值是数字或字符串,具体情况取决于所用的语境。

    SELECT IFNULL(2 > 1, 5); SELECT IFNULL(0 > 1, 5); SELECT IFNULL(1 / 0, 5);
    --> 1; --> 0; --> 5.0000;
    SELECT IFNULL(0, 5); SELECT IFNULL(null, 5); SELECT IFNULL(1 / 0, '5');
    --> 0; --> 5;  --> 5;

     

     

      

      -- NULLIF(expr1[bool类型], expr2)

        如果 expr1 = expr2 则返回 null,否则返回 expr1。这和 CASE WHEN expr1 = expr2 THEN null ELSE expr1 END。

        此方法不能判断 null 值!

    SELECT NULLIF(10, null); SELECT NULLIF(1/0, 5); SELECT NULLIF(1/0, null);
    --> 10; --> null; --> null;

     

      

      -- ISNULL(expr[bool类型])

        如果 expr 的值为 null 则返回 1,否则返回 0。

    SELECT ISNULL(1); SELECT ISNULL(0); SELECT ISNULL(null); SELECT ISNULL(1/0);
    --> 0; --> 0; --> 1; --> 1;

     

     

    在 Select 之后通过处理查询出来的 NULL 值,IF()、IFNULL()、NULLIF()、ISNULL() 是不识别的!!!
    上述方法只能处理 Table 中的 null 值,即判断某条记录中的某字段是否为 null,无法对不存在的记录进行 null 判断 !!!
    解决:在 Select 外再套一层 Select 处理,将内层的 Select 结果作为虚拟表 

     

  • 相关阅读:
    vsftpd的主动模式与被动模式
    Linux环境下vsftpd参数配置
    CentOS下的网络配置文件说明
    第一篇博客,随笔留念
    asp.net xml 增删改操作
    asp.net json 与xml 的基础事例
    linq 之 Distinct的使用
    【P2015】二叉苹果树(树状DP)
    【P2016】战略游戏(贪心||树状DP)
    【P2774】方格取数问题(贪心+最大流,洛谷)
  • 原文地址:https://www.cnblogs.com/oumae/p/12311945.html
Copyright © 2011-2022 走看看