SQL Null函数

SQL Null函数

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

当我们的数据缺失或所需数据不可用时,NULL值类似于数据库中的占位符。它是一个灵活的值,不属于任何实际的数据类型,并且可以放在任何数据类型的列中,例如字符串、整数、varchar等。

以下是NULL值的各种特性:

  • NULL值与零值或包含空格的字段是不同的。具有NULL值的记录是在记录创建过程中留空的记录。
  • NULL值有助于消除数据的不明确性。同时,NULL值有助于在列中保持统一的数据类型。

如果用户在手机号码列中输入了他们的出生日期,当需要联系时可能会产生歧义。为了解决这个问题,我们必须在插入数据之前检查数据,并使用NULL函数将不是日期数据类型的数据更新为NULL。

SQL中的NULL函数

有了识别NULL数据的能力,我们可以对其执行类似于SQL中的聚合方法的操作。它们包括:

  • ISNULL()
  • COALESCE()
  • NULLIF()
  • IFNULL()

让我们逐一详细讨论这些函数。

ISNULL()函数

SQL服务器的 ISNULL() 函数允许在表达式为空时返回替代值。或者我们可以说它用于替换NULL值。

此函数可用于需要更新表的情况。如果最终找到一个适当的值来填充记录中的空白空间,就会替换NULL值。

语法

ISNULL() 函数的语法如下:

SELECT ISNULL(column_name, value_to_return) FROM table_name;

示例

在下面的示例中,我们将客户表中的薪水的NULL值替换为”500000″。

假设我们使用以下查询创建了一个名为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语句将值插入到这个表中 –

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', NULL );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', NULL );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (7, 'Muffy', 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 | MP        |   NULL   |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

以下是替换空值的查询:

SELECT ISNULL(SALARY, 500000) AS Result FROM CUSTOMERS;

输出

执行上述查询后,我们得到”salary”列,并且空值将被替换为”500,000″,正如我们在结果列中看到的那样。

+---------+
| Result  |
+---------+
|  2000   |
|  1500   |
|  50000  |
|  6500   |
|  8500   |
|  50000  |
|  10000  |
+---------+

COALESCE() 函数

SQL服务器的 COALESCE() 函数返回其参数中第一个出现的非NULL表达式。如果所有表达式都为NULL,则COALESCE()函数将返回NULL。

在COALESCE()函数中,整数始终先进行评估,而整数后面跟着一个字符表达式将产生一个整数作为输出。

语法

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

SELECT COALESCE (expression_1, expression_2, …, expression_n) FROM table_name;

示例

在下面的示例中,我们使用以下查询来返回第一个出现的非空值。

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

输出

在执行上述查询时,我们得到了”tutorialspoint”作为结果,因为它是第一个紧随NULL值之后的字符串,正如我们可以在随后的结果列中看到的那样。

+-----------------+
|   Result        |
+-----------------+
|  tutorialspoint |
+-----------------+

示例

在下面的示例中,我们使用 COALESCE() 函数来检索”姓名”和”薪水”,将参数”年龄”和”薪水”传递给coalesce()函数,并作为结果。如下面的查询所示−

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

输出

执行上述查询后,我们获取到姓名和工资,并使用COALESCE()函数比较工资和年龄。它将返回一个不为空的值作为结果,在输出表中可以看到。

+----------+------------+------------+
| NAME     | SALARY     | Result     |
+----------+------------+------------+
| Ramesh   |  2000.0000 |  2000.0000 |
| Khilan   |  1500.0000 |  1500.0000 |
| kaushik  |       NULL |    23.0000 |
| Chaitali |  6500.0000 |  6500.0000 |
| Hardik   |  8500.0000 |  8500.0000 |
| Komal    |       NULL |    22.0000 |
| Muffy    | 10000.0000 | 10000.0000 |
+----------+------------+------------+

NULLIF()函数

NULLIF()函数接受两个参数。如果两个表达式相同,则返回NULL。否则,返回第一个参数。我们可以直接在SELECT、WHERE和GROUP BY等子句中使用这个函数。

语法

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

SELECT column(s), NULLIF(expression_1, expression_2) FROM table_name;

示例

在下面的示例中,我们使用WHERE子句创建了一个查询,利用NULLIF()函数从Customers表中返回“name”和“age”。我们将年龄和薪水作为NULLIF()函数的参数。

SELECT NAME, NULLIF(AGE, SALARY) AS Result FROM  CUSTOMERS WHERE SALARY IS NULL;

输出

在执行以上查询时,我们使用NULLIF()函数检索名称和年龄。我们将年龄返回作为结果,因为NULLIF()函数在两个参数不相同时返回第一个参数。如下所示的输出表中可以看到:

+----------+---------+
| NAME     | Result  |
+----------+---------+
| Kaushik  |    23   |
| Komal    |    22   |
+----------+---------+

IFNULL()函数

IFNULL()函数仅在MySQL中可用,而不在SQL服务器中可用。它接受两个参数;如果第一个参数不为null,则返回第一个参数;否则,返回第二个参数。通常用于将NULL值替换为另一个值。根据使用的上下文,它返回字符串或数值。

语法

IFNULL()函数的语法如下所示:

SELECT column(s), IFNULL(column_name, value_to_replace) FROM table_name;

示例

在下面的示例中,我们正在获取ID、NAME、AGE和SALARY,并将空的薪水替换为”550000″,并使用别名Result。正如我们在下面的查询中所看到的-

SELECT ID, NAME, AGE, SALARY, IFNULL(SALARY, 550000) AS Result FROM customers WHERE SALARY IS NULL;

输出

在执行上述查询时,我们得到了我们正在获取的所有详细信息。如下面的输出表所示−

+----+---------+-----+--------+-------------+
| ID | NAME    | AGE | SALARY | Result      |
+----+---------+-----+--------+-------------+
|  3 | kaushik |  23 |   NULL | 550000.0000 |
|  6 | Komal   |  22 |   NULL | 550000.0000 |
+----+---------+-----+--------+-------------+
2 rows in set (0.05 sec)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程