Sql 简明教程

SQL - Null Functions

SQL NULL 函数用于对存储在数据库表中的 NULL 值执行操作。

当数据不存在或所需的信息不可用时,NULL 值作为数据库中的占位符。它是一个不与任何特定数据类型关联的灵活值,并且可以用于各种数据类型的列中,包括字符串、int、varchar 等。

以下是 NULL 值的各种特性:

  1. NULL 值不同于零值或包含空格的字段。具有 NULL 值的记录是记录创建期间留空或未指定的记录。

  2. NULL 值帮助我们消除了数据的歧义。因此,在整个列中保持统一的数据类型。

SQL NULL Functions

为了处理数据库表中的这些 NULL 值,SQL 提供了各种 NULL 函数。它们如下所示:

  1. ISNULL()

  2. COALESCE()

  3. NULLIF()

  4. IFNULL()

The ISNULL() Function

SQL ISNULL() 函数根据表达式是否为空返回 0 和 1。如果表达式为空,则此函数返回 1;否则,返回 0。

Syntax

以下是要点的语法 ISNULL() 功能 -

ISNULL(column_name)

Example

首先,让我们创建一个名为 CUSTOMERS 的表,其中包含客户的个人详细信息,包括他们的姓名、年龄、地址和工资等,使用以下查询-

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

现在,使用 INSERT INTO 语句将记录插入到此表中,如下所示 -

INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', NULL ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', NULL ),
(7, 'Indore', 24, 'Indore', 10000.00 );

该表将被创建为:

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

23

Kota

NULL

4

Chaitali

25

Mumbai

6500.00

5

Hardik

27

Bhopal

8500.00

6

Komal

22

Hyderabad

NULL

7

Indore

24

Indore

10000.00

以下是查询以检查 SALARY 是否为 NULL -

SELECT SALARY, ISNULL(SALARY) AS Null_value FROM CUSTOMERS;

Output

在执行上述查询时,我们得到“SALARY”和 Null_value 列。如果 SALARY 为 NULL,那么它们的空值为 1;否则为 0。-

SALARY

Null_value

2000.00

0

1500.00

0

NULL

1

6500.00

0

8500.00

0

NULL

1

10000.00

0

The COALESCE() Function

SQL COALESCE() 函数返回其参数中首次出现的非空表达式。如果所有表达式都为 NULL,那么 COALESCE() 函数将返回 NULL。

Syntax

以下是语法 COALESCE() 功能 -

COALESCE(expression_1, expression_2, expression_n);

Example

在以下查询中,我们返回首次出现的非空值 -

SELECT COALESCE (NULL, 'welcome', 'tutorialspoint') AS Result;

Output

执行上述查询后,我们将得到“欢迎”作为结果,因为它是第一个非空值 -

Result

welcome

Example

在以下查询中,我们在 CUSTOMERS 表的 SALARY 和 AGE 列上使用 COALESCE() 函数。从这两列评估出的第一个非空值显示在另一个名为“Result”的列中。

SELECT NAME, SALARY, AGE, COALESCE(SALARY, AGE) AS Result FROM CUSTOMERS;

Output

当您执行上述查询时,我们会得到以下表格作为结果 -

NAME

SALARY

AGE

Result

Ramesh

2000.00

32

2000.00

Khilan

1500.00

25

1500.00

Kaushik

NULL

23

23.00

Chaitali

6500.00

25

6500.00

Hardik

8500.00

27

8500.00

Komal

NULL

22

22.00

Indore

10000.00

24

10000.00

The NULLIF() Function

SQL NULLIF() 函数比较两个表达式。如果两个表达式相同,则返回 NULL。否则,它会返回第一个表达式。此函数可以直接与 SELECT、WHERE 和 GROUP BY 等子句一起使用。

Syntax

以下是 NULLIF() 函数的语法-

NULLIF(expression_1, expression_2);

Example

以下 SQL 查询使用 NULLIF() 函数来比较 CUSTOMERS 表中 NAME 和 ADDRESS 列中的值。如果 NAME 值与 ADDRESS 值匹配,则结果为 NULL;否则,它将返回 NAME 值。结果值存储在称为“Result”的另一列中。

SELECT NAME, ADDRESS, NULLIF(NAME, ADDRESS) AS Result FROM CUSTOMERS;

Output

当您执行上述查询时,我们会得到以下表格作为结果 -

NAME

ADDRESS

Result

Ramesh

Ahmedabad

Ramesh

Khilan

Delhi

Khilan

Kaushik

Kota

Kaushik

Chaitali

Mumbai

Chaitali

Hardik

Bhopal

Hardik

Komal

Hyderabad

Komal

Indore

Indore

NULL

The IFNULL() Function

IFNULL() 函数将数据库表中的 NULL 值替换为特定值。此函数接受两个参数。如果第一个参数为 NULL 值,则用第二个参数替换它。否则,第一个参数按原样返回。

如果两个参数都是 NULL,则此函数的结果也是 NULL。

Syntax

以下是 IFNULL() 函数的语法-

IFNULL(column_name, value_to_replace);

Example

以下查询计算 CUSTOMERS 表中 SALARY 列中的值。使用 IFNULL() 函数,我们用值 5500 替换此列(如果有)中的 NULL 值 -

SELECT NAME, SALARY, IFNULL(SALARY, 5500) AS Result FROM CUSTOMERS;

Output

以下是以上查询的输出:

NAME

SALARY

Result

Ramesh

2000.00

2000.00

Khilan

1500.00

1500.00

Kaushik

NULL

5500.00

Chaitali

6500.00

6500.00

Hardik

8500.00

8500.00

Komal

NULL

5500.00

Indore

10000.00

10000.00