SQL 合并

SQL 合并

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 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

现在,我们将使用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”的新列中。

SQL 合并

示例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函数,因此我们从这些列中获取到第一个非空值,并将该非空值插入到名为“姓名”的新列中。

SQL 合并

示例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 Email

现在,我们将在’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 Email
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 合并

结论:

在本文中,您已经学习了SQL中的COALESCE函数。COALESCE函数用于返回输入列中第一个非空值的列。您已经了解了COALESCE函数的各种优点和示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程