📜  MySQL IF 没有 else - SQL (1)

📅  最后修改于: 2023-12-03 15:17:45.821000             🧑  作者: Mango

MySQL IF 没有 else - SQL

当我们在 MySQL 中需要使用逻辑判断时,通常会使用 IF-ELSE 语句。但是如果没有 ELSE 分支,我们该怎么办呢?

在 MySQL 中,可以使用 IFNULL 和 NULLIF 函数来实现 IF 没有 else 的逻辑判断。

IFNULL 函数

IFNULL 函数的作用是,如果第一个参数为 NULL,则返回第二个参数;否则返回第一个参数。我们可以利用这个特性来实现 IF 没有 else 的逻辑判断。

语法如下:

IFNULL(expr1,expr2)

示例:

SELECT IFNULL(NULL, 'a'), IFNULL('b', 'c');

结果:

| IFNULL(NULL, 'a') | IFNULL('b', 'c') |
| ----------------- | ---------------- |
| a                 | b                |

在上面的示例中,第一个参数为 NULL,返回了第二个参数 'a';第二个参数不为 NULL,返回了第一个参数 'b'。

我们可以将 IFNULL 函数嵌套在 SELECT 语句中,来实现 IF 没有 else 的逻辑判断。

示例:

SELECT column1, IFNULL(column2, 'default')
FROM table1;

在上面的示例中,如果 column2 为 NULL,则返回 'default';否则返回 column2 的值。

NULLIF 函数

NULLIF 函数的作用是,如果第一个参数等于第二个参数,则返回 NULL;否则返回第一个参数。我们可以利用这个特性来实现 IF 没有 else 的逻辑判断。

语法如下:

NULLIF(expr1,expr2)

示例:

SELECT NULLIF('a', 'b'), NULLIF('a', 'a');

结果:

| NULLIF('a', 'b') | NULLIF('a', 'a') |
| ---------------- | ---------------- |
| a                | NULL             |

在上面的示例中,第一个参数不等于第二个参数,返回了第一个参数 'a';第一个参数等于第二个参数,返回了 NULL。

我们可以将 NULLIF 函数嵌套在 SELECT 语句中,来实现 IF 没有 else 的逻辑判断。

示例:

SELECT column1, NULLIF(column2, 'not found')
FROM table1;

在上面的示例中,如果 column2 等于 'not found',则返回 NULL;否则返回 column2 的值。