MySQL IF函数

时间:2019-11-20 08:52:20  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用基于给定条件返回值的MySQL IF函数。

MySQL IF函数简介

MySQL IF函数是MySQL控制流函数之一,该函数根据条件返回值。
IF功能有时称为IF ELSE或IF THEN ELSE功能。

MySQL IF函数的语法如下:

IF(expr,if_true_expr,if_false_expr)

如果expr的计算结果为TRUE,即expr不为NULL并且expr不为0,则IF函数返回if_true_expr,否则返回if_false_expr IF函数根据其使用方式返回数字或字符串。

我们在本教程中介绍的IF函数与IF语句不同。

MySQL IF函数示例

让我们通过几个示例进行练习,以了解MySQL IF函数的工作方式。

一个简单的IF函数示例

您可以直接在SELECT语句中使用IF函数,而无需使用FROM和其他子句,如下所示:

SELECT IF(1 = 2,'true','false'); -- false
SELECT IF(1 = 1,' true','false'); -- true

使用MySQL IF函数显示N / A而不是NULL

让我们看一下示例数据库中客户表中的数据。

在客户表中,许多客户在状态列中没有状态数据,因此,当我们选择客户时,状态列显示NULL值,这对于报告目的没有意义。
请参阅以下查询:

SELECT 
    customerNumber, customerName, state, country
FROM
    customers;

如果状态为NULL,则可以使用IF函数返回N / A来改善输出,如下所示:

SELECT 
    customerNumber,
    customerName,
    IF(state IS NULL, 'N/A', state) state,
    country
FROM
    customers;

MySQL IF函数和聚合函数

MySQL SUM IF –将IF函数与SUM函数结合

IF函数与聚合函数结合使用时非常有用。
假设您想知道已经发货和取消了多少订单,可以将IF函数与SUM聚合函数一起使用,如下所示:

SELECT 
    SUM(IF(status = 'Shipped', 1, 0)) AS Shipped,
    SUM(IF(status = 'Cancelled', 1, 0)) AS Cancelled
FROM
    orders;

在上面的查询中,如果订单状态为已发货或已取消,则IF函数返回1,否则返回0。
SUM函数根据IF函数的返回值计算已发货和已取消订单的总数。

MySQL COUNT IF –结合IF函数和COUNT函数

首先,我们使用以下查询在订单表中选择不同的订单状态:

SELECT DISTINCT
    status
FROM
    orders
ORDER BY status;

其次,通过将IF函数与COUNT函数结合起来,可以得到每种状态下的订单数量。
因为COUNT函数不计算NULL值,所以如果状态不在选定状态,则IF函数返回NULL,否则返回1。
请参阅以下查询:

SELECT 
    COUNT(IF(status = 'Cancelled', 1, NULL)) Cancelled,
    COUNT(IF(status = 'Disputed', 1, NULL)) Disputed,
    COUNT(IF(status = 'In Process', 1, NULL)) 'In Process',
    COUNT(IF(status = 'On Hold', 1, NULL)) 'On Hold',
    COUNT(IF(status = 'Resolved', 1, NULL)) 'Resolved',
    COUNT(IF(status = 'Shipped', 1, NULL)) 'Shipped'
FROM
    orders;

当然,您可以使用GROUP BY子句和COUNT函数获得类似的结果,而无需将IF函数用作以下查询:

SELECT status, COUNT(STATUS)
FROM orders
GROUP BY status

在本教程中,我们向您介绍了MySQL IF函数,该函数可帮助您编写带有嵌入SELECT子句中的条件的查询。