暂无图片
暂无图片
3
暂无图片
暂无图片
1
暂无图片

MySQL IF–函数和语句

原创 谭磊Terry 恩墨学院 2022-07-09
1955

MySQL IF 语句

IF语句允许你验证条件。MySQL IF语句有三种类型:

  • IF-THEN
  • IF-THEN-ELSE
  • IF-THEN-ELSEIF-ELSE

MySQL IF-THEN 语句

你可以使用IF-THEN根据条件运行SQL查询集合。以下是语句语法:

IF condition THEN 
  statements;
END IF;
复制

如果指定条件的计算结果为:

  • true – IF-THEN 和 END-IF 之间的语句将被执行
  • false – END-IF 模块后面的语句将被应用

MySQL IF-THEN-ELSE 语句

为了在 IF 模块中的条件不为真时执行语句,您可以使用 IF-THEN-ELSE ,如下所示:

IF condition THEN
   statements;
ELSE
   else-statements;
END IF;
复制

如果指定条件的计算结果为:

  • true – IF-THEN 和 ELSE 之间的语句将被执行
  • false – ELSE 和 END-IF 模块后面的语句将被执行

MySQL IF-THEN-ELSEIF-ELSE 语句

使用 IF-THEN-ELSEIF-ELSE ,你可以基于多种条件运行语句,语法如下:

IF condition THEN
   statements;
ELSEIF elseif-condition THEN
   elseif-statements;
...
ELSE
   else-statements;
END IF;
复制

让我们回顾一下每个区块。如果条件z在 IF-THEN 模块是:

  • true – 语句将被执行
  • false – elseif 条件将被评估

如果 elseif 条件在 ELSEIF-THEN 模块为:

  • true – elseif 语句将被执行
  • false – 估下一个 elseif 条件将被评估

如果在IF-THEN 和 in the ELSEIF-THEN 模块中都没有结果为真的条件,则 else 模块中语句将被应用。

MySQL IF 语句示例

在本节中,我们将回顾IF语句使用的示例。

在下面的语句中,我们使用声明以下条件使用 IF-THEN:如果 STATUS 列中所有空条目的总和大于 0,那么在输出中您将看到消息“We have rows with NULL!!!”

DELIMITER $$
CREATE PROCEDURE GetEmtyStatus(
    OUT Message  VARCHAR(100))
BEGIN
    DECLARE sum_null DECIMAL(10,2) DEFAULT 0;
    SELECT COUNT(*) INTO sum_null FROM TASKS WHERE status IS NULL;
    IF sum_null > 0 THEN
        SET Message = 'We have rows with NULL!!!';
    END IF;
END$$
DELIMITER
复制


在这个 IF-THEN-ELSE 语句中,我们指定了两个条件:

  • 如果 STATUS 列中所有已完成记录的总和为 0,则会出现消息“We have rows with NULL!!!”
  • 如果 STATUS 列中所有已完成记录的总和不为 0,您将看到“We do not have rows with NULL!!!” 在输出中
DELIMITER $$
CREATE PROCEDURE GetEmptyStatusNotNull(
    OUT Message  VARCHAR(100))
BEGIN
    DECLARE sum_null DECIMAL(10,2) DEFAULT 0;
    SELECT COUNT(*) INTO sum_null FROM TASKS WHERE STATUS IS NOT NULL;
    IF sum_null = 0 THEN
        SET Message = 'We have rows with NULL!!!';
                    ELSE 
        SET Message = 'We do not have rows with NULL!!!' ;
    END IF;
END$$
DELIMITER ;
复制


使用 IF-THEN-ELSEIF-ELSE
该语句,我们设置了多个条件:

  • 如果 STATUS 列中所有空值的总和小于3,则消息“We have rows with NULL!!!” 将被显示
  • 如果 STATUS 列中所有空值的总和大于3,您将看到“我们有 NULL,但结果是有效的!!!”
  • 如果该值不满足前两个条件,则会出现消息“We do not have rows with NULL!!!” 在输出中
DELIMITER $$
CREATE PROCEDURE CheckStatus(
    OUT Message  VARCHAR(100))
BEGIN
    DECLARE sum_null DECIMAL(10,2) DEFAULT 0;
    SELECT COUNT(*) INTO sum_null FROM TASKS WHERE STATUS IS  NULL;
    IF sum_null < 3 THEN
        SET Message = 'We have rows with NULL!!!';
    ELSEIF sum_null>3 THEN
        SET Message = 'We have NULL, but result is valid!!!';  
    ELSE 
        SET Message = 'We do not have rows with NULL!!!' ;
    END IF;
END$$
DELIMITER ;
复制



MySQL 函数

介绍

在本节中,我们将探索以下 MYSQL 函数:IF、NULLIF和IFNULL。

什么是 MySQL 函数?

MySQL 中的函数由一组带有某些参数的 SQL 语句组成,这些参数执行任务或操作并返回一个值作为结果。

例如,MySQL Version() 函数返回 MySQL 数据库的当前版本。

IF 函数:定义、语法和用法

注意 IF 函数和 IF 语句不一样。

IF 函数为一个指定条件返回一个值,并具有以下语法:

IF(expr,if_true_expr,if_false_expr)
复制

如果expr计算结果为真(它不为 NULL),则该函数返回if_true_expr 。否则,它返回if_false_expr。根据使用方式,IF 函数返回数值或字符串。

例子

让我们回顾一下该IF函数的一些示例。

MySQL IF 函数的简单示例

该IF函数接受三个表达式,如果第一个表达式为真、非 NULL 且非零,则返回第二个表达式。否则,函数返回第三个表达式。

在此示例中,由于 1 小于 2,函数将返回NO:

SELECT IF(1>2, 'YES', 'NO');
复制

在下面的语句中,IF函数将返回:

  • 3– 如果条件为真
  • 5– 如果条件为假
SELECT IF(300<500, 3, 5);
复制

此外,您可以使用 MySQL IF函数结合STRCMP来比较两个字符串。以下语句将返回:

  • YES– 如果test和test1相同
  • 否 – 如果 test和test1不同
SELECT IF(STRCMP("test","test1"), "YES", "NO");
复制

具有聚合函数的 MySQL IF 函数

聚合函数计算多个值并提供单个值作为结果。将IF函数结合聚合函数一起使用可能有助于检索特定输出。

在本节中,我们将回顾一些可以与函数一起使用的聚合IF函数。

MySQL SUM IF

例如,如果您想知道本月已完成或仍计划的工作任务数,可以将该函数与SUM聚合函数一起使用,如以下查询所示:

SELECT 
    SUM(IF(status = 'Completed', 1, 0)) AS Completed
FROM
    tasks;
复制


在上面的查询中,如果任务状态为已完成或已计划,则IF函数返回1或0。SUM函数根据IF函数的返回值确定已计划和已完成的任务总数。

MySQL COUNT IF

可以将该IF功能与 MySQL COUNT 函数功能结合使用。我们使用以下查询在Tasks表中选择任务的状态:

SELECT DISTINCT
    status
FROM
    orders
ORDER BY status;

SELECT DISTINCT
    status
FROM
   tasks
ORDER BY status;
复制



通过将 IF 函数与 COUNT 结合,我们可以找出在任何给定时间每个状态有多少任务。由于NULL函数在 count 函数中不计算值,如果状态不是处于选定状态,COUNT 函数返回 NULL,否则返回 1。请看下面的查询:

SELECT 
    COUNT(IF(status = 'Completed', 1, NULL)) Completed,
    COUNT(IF(status = 'Reopened', 1, NULL)) Reopened,
    COUNT(IF(status = 'In Progress', 1, NULL)) 'In Progress',
    COUNT(IF(status = 'In Review', 1, NULL)) 'In Review',
    COUNT(IF(status = 'Planned', 1, NULL)) 'Planned'
FROM
    tasks;
复制

你也可以得到类似的结果,不使用 IF 函数,而是使用GROUP BY 子句和 COUNT 函数,如下所示:

SELECT status, COUNT(STATUS)
FROM tasks
复制



NULLIF 函数:定义、语法和用法

MySQL NULLIF用于比较两个表达式:

NULLIF(expr1, expr2)
复制

如果两个表达式相等,则该函数返回NULL,否则返回第一个表达式。让我们在实践中尝试一下:

SELECT NULLIF(25, 25);
复制


如您所见,两个表达式是相等的,这就是函数返回 NULL 的原因。

IFNULL 函数:定义、语法和用法

MySQL IFNULL 用于检查 NULL 指定表达式中的任何值:

IFNULL(expr_1, expr_2)
复制

如果表达式为 NOT NULL ,则函数返回 expr_1。否则,如果表达式为 NULL ,则返回expr_2。因此,例如,如果您运行:

SELECT IFNULL(NULL, 500);
复制

你会得到这样的输出:

该函数返回 500,因为表达式为 NULL。

通过 MYSQL IF 函数展示 N/A 而不是 NULL

让我们创建一个演示 MySQL 表 Company。雇员表中的许多雇员在城市列中没有数据,因此,当我们选择雇员时,城市列显示 NULL 值。看看下面的查询:

SELECT 
    employeeNumber, employeeName, age, city
FROM
    employees;
复制

为了提高输出,我们可以使用IF函数返回 N/A 如果 the city 列的值是 NULL,如以下查询所示:

SELECT
    employeeNumber,
    employeeName,
    IFNULL(city, 'N/A'),
    age
FROM
    employees;
复制


结论

在本文中,我们找出了 MySQL IF 语句和 IF 函数之间的区别,并回顾了其他 MySQL 函数。此外,我们还展示了它们的一小部分用法变化。实际上,存在很多 MySQL 语句、查询和函数。这就是为什么数据库管理员必须拥有一个可靠且易于使用的工具来促进他们的日常工作。例如,dbForge Studio for MySQL可以成为您数据库开发、管理和管理不可或缺的助手。该工具具有丰富的功能,您可以在其中找到代码完成和代码格式化等等。有关 dbForge Studio for MySQL 的更多信息,请随时观看这些视频教程.

原文标题:MySQL IF – Function and Statement (with Examples)
原文作者:DbForge Team
原文地址:https://blog.devart.com/mysql-if-function-and-statement-with-examples.html#NULLIF-function-definition-syntax-and-usage

最后修改时间:2022-07-10 22:45:03
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

筱悦星辰
暂无图片
1年前
评论
暂无图片 0
时间是最公正的裁判,它会看到你的每一分付出。你给生活以热爱,给事情以专注,时间就会回馈你最好的礼物。
1年前
暂无图片 点赞
评论