SQL Coalesce函数
在SQL编程中,有许多可用于转换数据的函数。其中一个强大的SQL编程函数是Coalesce,它允许在SQL查询中处理NULL值。在本文中,我们将学习关于Coalesce SQL的内容。
Coalesce是一个SQL函数,它从输入值列表中返回第一个非空值。如果每个参数都是NULL,则返回NULL。
Coalesce函数的语法:
COALESCE(Value_1, Value_2, Value_3,......, Value_n)
使用SQL中的Coalesce函数的优点:
处理NULL值:
NULL值在数据库中经常出现,并且在执行计算时通常会导致不希望的结果。Coalesce函数提供了一个很好的解决方案,允许SQL开发人员将NULL值替换为可选值。它确保即使存在NULL,查询也会返回有效的结果。
简化条件逻辑:
Coalesce SQL消除了处理NULL的复杂条件逻辑的需要。SQL开发人员可以使用Coalesce在NULL的情况下提供默认值,而不是创建大量的IF语句。它简化了代码,使其更容易阅读。
高效的数据恢复:
Coalesce可以改善SQL数据恢复操作的效率。SQL开发人员可以使用Coalesce将多个列合并为单个结果,而不是查询单个列并检查NULL值。它提高了性能,尤其是在处理大量数据集时。
用于报告的数据更改:
在构建报告或呈现数据时,Coalesce SQL非常有用。它允许SQL开发人员将多个列或字段组合成一致的输出,并提供数据的综合视图。这种汇总简化了报告任务,并改善了结果对利益相关者的显示。
增加可读性:
Coalesce通过显式处理NULL值来提高SQL查询的可读性。当在查询中遇到Coalesce函数时,它只是告诉您正在处理NULL值,并提供了一种处理它们的简单方法。它有助于维护SQL代码,并帮助其他开发人员更容易地理解代码,以便他们可以无问题地工作。
表达式的灵活性:
Coalesce函数允许您将多个表达式指定为参数。它按照提供的顺序评估每个表达式,并返回第一个非空值。它使您能够灵活定义备用表达式,以便在NULL值的情况下使用。可以使用尽可能多的表达式,并且函数将返回遇到的第一个非空值。
性能优化:
使用Coalesce函数可以提高查询性能。当涉及到NULL检查的复杂条件时,使用Coalesce函数有助于消除添加更多条件逻辑的要求。它减少了整体查询复杂性,从而提高了性能。
跨平台兼容性:
Coalesce函数得到了遵循SQL标准的各种数据库管理系统(DBMS)的广泛支持。它在包括Oracle、SQL Server、MySQL、PostgreSQL等著名关系数据库中可用。这意味着您可以在各种数据库平台上持续使用Coalesce函数,并使您的SQL代码具有可移植性,易于适应不同的环境。
Coalesce函数的示例:
示例1:
让我们创建一个名为’students’的表,该表具有Id、Name、Age、Subject和Address等字段。
使用以下命令构建’students’表:
CREATE TABLE students (
Id INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Age INT NOT NULL,
Subject VARCHAR(40),
Address VARCHAR(50)
);
表格已创建,它将如下所示:
Id | Name | Age | Subject | Address |
---|---|---|---|---|
现在,我们将在“students”表中添加数值,
INSERT INTO students
VALUES(201, 'Virat', 24, 'Computer Science', NULL),
(202, 'Sanjay', 21, NULL, 'Noida'),
(203, 'Anjana', 20, 'Mathematics', NULL),
(204, 'Kriti', 19, 'Mathematics', 'Lucknow'),
(205, 'Shivani', 23, NULL, 'Lucknow'),
(206, 'Reshma', 23, 'Arts', NULL);
在插入了值之后,’students’表将如下所示:
Id | Name | Age | Subject | Address |
---|---|---|---|---|
201 | Virat | 24 | 计算机科学 | NULL |
202 | Sanjay | 21 | NULL | Noida |
203 | Anjana | 20 | 数学 | NULL |
204 | Kriti | 19 | 数学 | Lucknow |
205 | Shivani | 23 | NULL | Lucknow |
206 | Reshma | 23 | 艺术 | NULL |
现在,我们将使用COALESCE函数从’students’表中获取第一个非空值。为此,我们将使用以下命令:
SELECT Id, Name, Age, COALESCE(Subject, Address) AS INFO
FROM students;
正如下面所示,生成了一个包含’Id’、’Name’、’Age’和’INFO’的表。我们没有对’Id’、’Name’和’Age’应用COALESCE函数,所以它们仍然保持不变。但是我们在’Subject’和’Address’列上使用了COALESCE函数,所以从’Subject’和’Address’列中获取了第一个非空值,并将该非空值插入到名为’INFO’的新列中。
示例2:
我们创建一个名为’employees’的表,该表具有如id、first_name、middle_name、last_name、Address和Salary等字段。
使用给定的命令创建’employees’表:
CREATE TABLE employees (
Id INT PRIMARY KEY,
first_name VARCHAR(40),
middle_name VARCHAR(40),
last_name VARCHAR(40),
Address VARCHAR(50),
Salary INT
);
表格被创建了,它的样子如下所示:
Id | first_name | middle_name | last_name | Address | Salary |
---|---|---|---|---|---|
现在,我们将在’employees’表中插入值,
INSERT INTO employees
VALUES(1, 'Rohit', NULL, 'Mishra', 'Goa', 50000),
(2, 'Sameer', NULL, NULL, 'Meerut', 49000),
(3, NULL, NULL, 'Singh', 'Goa', 35000),
(4, 'Rohan', NULL, 'Kapoor', 'Bhopal', 45000),
(5, 'Aarti', NULL, NULL, 'Meerut', 37000),
(6, NULL, 'Singh', 'Tomar', 'Meerut', 47000);
在将值插入’employees’表后,它将如下所示:
Id | first_name | middle_name | last_name | Address | Salary |
---|---|---|---|---|---|
1 | Rohit | NULL | Mishra | Goa | 50000 |
2 | Sameer | NULL | NULL | Meerut | 49000 |
3 | NULL | NULL | Singh | Goa | 35000 |
4 | Rohan | NULL | Kapoor | Bhopal | 45000 |
5 | Aarti | NULL | NULL | Meerut | 37000 |
6 | NULL | Singh | Tomar | Meerut | 47000 |
现在,我们将使用COALESCE函数从’employees’表中获取第一个非空值。为此,我们将使用以下语句:
SELECT Id, Address, Salary, COALESCE(first_name, middle_name, last_name) AS Name
FROM employees;
正如您在下面看到的那样,生成了一个包含“Id”、“地址”、“薪水”和“姓名”的表格。我们没有对“Id”、“地址”和“薪水”应用COALESCE函数,所以它们将保持不变。但是我们已经在“first_name”、“middle_name”和“last_name”列上使用了COALESCE函数,所以我们从“first_name”、“middle_name”和“last_name”列中得到了第一个非空值,并将该非空值插入到名为“Name”的新列中。
示例3:
让我们创建一个名为’customers’的表,该表具有Id、Name、Gender、contact_no和email等字段。
使用给定的命令创建’customers’表:
CREATE TABLE customers (
Id INT PRIMARY KEY NOT NULL,
Name VARCHAR(45) NOT NULL,
Gender VARCHAR(25) NOT NULL,
contact_no BIGINT,
Email VARCHAR(125)
);
表已创建,它会像下面所示:
Id | Name | Gender | contact_no | |
---|---|---|---|---|
现在,我们将在“customers”表中插入数值,
INSERT INTO customers
VALUES(1, 'Prachi', 'F', 9562548225, 'prachi@email.com'),
(2, 'Rashi', 'F', NULL, 'rashi@email.com'),
(3, 'Kamal', 'M', NULL, NULL),
(4, 'Harish', 'M', 8562314252, NULL),
(5, 'Vani', 'F', NULL, 'vaani@email.com');
插入值到’customers’表后,它将看起来如下所示:
Id | Name | Gender | contact_no | |
---|---|---|---|---|
1 | Prachi | F | 9562548225 | stash |
2 | Rashi | F | NULL | stash |
3 | Kamal | M | NULL | NULL |
4 | Harish | M | 8562314252 | NULL |
5 | Vani | F | NULL | stash |
现在,我们将使用COALESCE函数从’customers’表中获取第一个非空值。为此,我们将使用以下语句:
SELECT Id, Name, Gender, COALESCE(contact_no, Email) AS Information
FROM customers;
如下所示,生成了一个包含’Id’、’Name’、’Gender’和’Information’的表格。我们没有对’Id’、’Name’和’Gender’应用COALESCE函数,所以它们都保持不变。但是我们在’contact_no’和’Email’列上使用了COALESCE函数,所以我们得到了第一个非空值的’contact_no’和’Email’列,并将该非空值插入到名为’Information’的新列中。
您还可以看到,当’contact_no’和’Email’列都包含NULL时,第一个非空值也将为NULL。
结论:
在这篇文章中,你学习了关于SQL中的COALESCE函数。COALESCE函数用于返回输入列中第一个非空值的列。你已经理解了COALESCE函数的各种好处和示例。