📜  mysql select default if null - SQL (1)

📅  最后修改于: 2023-12-03 14:44:27.590000             🧑  作者: Mango

MySQL选择默认值if null - SQL

在MySQL中,我们经常需要在查询中使用默认值来替代NULL值。这可以通过使用IFNULL函数实现。在本文中,我们将介绍如何在MySQL中使用IFNULL函数以及其他一些替代NULL值的技巧。

IFNULL函数

IFNULL函数用于将一个表达式替换为另一个表达式,如果第一个表达式的值为NULL,则返回第二个表达式的值。

以下是IFNULL函数的基本语法:

IFNULL(expr1, expr2)

其中,expr1是要检查的表达式,expr2是用作默认值的表达式。

例如,如果我们想将空值(NULL)替换为0,则可以使用以下查询:

SELECT IFNULL(col1, 0) FROM my_table;
COALESCE函数

COALESCE函数类似于IFNULL函数,但它可以接受多个参数,并在第一个非NULL参数的位置上返回一个值。如果所有的参数都是NULL,则返回NULL。

以下是COALESCE函数的基本语法:

COALESCE(expr1, expr2, expr3, ...)

例如,如果我们希望将空值(NULL)替换为0,如果第一个参数为空,则替换为第二个参数,则我们可以使用以下查询:

SELECT COALESCE(col1, 0, col2) FROM my_table;
IF函数

IF函数用于根据条件返回不同的值。它有三个参数:第一个参数是一个条件,如果该条件为TRUE,则返回第二个参数的值,否则返回第三个参数的值。

以下是IF函数的基本语法:

IF(condition, value_if_true, value_if_false)

例如,如果我们希望将空值(NULL)替换为0,则可以使用以下查询:

SELECT IF(col1 IS NULL, 0, col1) FROM my_table;
CASE语句

CASE语句类似于IF函数,但它可以处理多个条件,并且可以在不同的条件下返回不同的值。

以下是CASE语句的基本语法:

CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE default_value
END

例如,如果我们希望将空值(NULL)替换为0,如果值大于10,则替换为1,否则替换为-1,则可以使用以下查询:

SELECT CASE
    WHEN col1 IS NULL THEN 0
    WHEN col1 > 10 THEN 1
    ELSE -1
END
FROM my_table;
总结

在MySQL中,我们可以使用IFNULL、COALESCE、IF函数或CASE语句来替代NULL值。这些函数和语句的选择取决于具体情况。尽管它们的性能可能略有不同,但在大多数情况下,它们的性能差异并不明显。