在SQL中组合两列
在SQL中,列是任何关系数据库的基本块。如果没有列和行,关系数据库将无法使用记录和属性存储结构化数据。
关系数据库中最基本和最常见的任务之一是将两个或多个列组合成单个实体。列组合允许我们通过合并数据库中两个或多个现有列的数据来创建新列。
在本教程中,我们将探讨如何在SQL中组合两个列。出于演示目的,我们将使用Sakila示例数据库,它为各种用例提供了广泛的数据集。
先决条件:
在我们开始之前,确保您已经安装了MySQL,并且可以访问Sakila示例数据库。
如果您没有安装Sakila样例数据库,或者您希望使用其他数据集,请随意这样做。
方法1:列连接
我们可以用来组合两个数据库列的最佳方法之一是使用concat()函数。这个函数允许我们将两个或多个列连接到一个单元中。
以以下查询为例:
SELECT CONCAT(first_name, ' ', last_name)作为full_name
从演员;
在本例中,我们使用concat()函数连接“actor”表中“first_name”和“last_name”列的值。然后,我们从结果集中创建一个名为“full_name”的新列。
使用示例输出如下:
full_name |
--------------------+
佩内洛普·吉尼斯|
尼克·沃尔伯格|
埃德·蔡斯|
詹妮弗·戴维斯|
约翰尼·洛洛布里吉特|
贝蒂·尼科尔森|
方法二:使用CONCAT_WS函数
我们还可以访问CONCAT_WS函数,它的行为与CONCAT()函数非常相似。然而,与CONCAT()函数不同的是,CONCAT_WS()函数允许我们在连接的值之间定义分隔符。
如果您需要自定义格式而不需要外部解析,这将非常有用。例如,我们希望在“first_name”后面加上全名。Last_name”的格式,查询示例如下:
选择CONCAT_WS(”。', first_name, last_name) AS full_name
从演员;
类似地,我们将“first_name”和“last_name”列合并为一个列。但是,我们使用点字符分隔值。
结果输出如下:
full_name |
--------------------+
佩内洛普。健力士|
尼克。沃尔伯格|
ED.CHASE |
詹妮弗。戴维斯|
约翰尼。LOLLOBRIGIDA说法|
方法3:连接条件
我们还可以通过添加一个基本的CASE语句来组合两个条件列。让我们举个例子:
选择
情况下
当rental_rate > 2.0 THEN CONCAT(title, '(贵)')
ELSE CONCAT(title, ' (Affordable)')
END AS movie_pricing
从电影;
对于我们的示例,我们将“title”列与基于“租金”列的条件组合在一起。这将创建一个名为“movie_pricing”的列,该列向标题添加一个元数据,说明租金是昂贵的还是可负担的。
使用示例输出如下:
movie_pricing |
---------------------------------------+
ACADEMY DINOSAUR(价格合理)|
王牌金手指(昂贵)|
适应漏洞(昂贵)|
婚外情偏见(昂贵)|
非洲蛋(昂贵)|
方法4:使用别名连接并连接
更具可读性的方法是为列提供别名,然后将别名值连接到单个单元中。
示例如下:
选择
CONCAT(客户。第一个_name, ' ', customer.last_name)
CONCAT(员工。first_name, ' ', staff.last_name)作为staff_name
从客户
让员工关注客户。Support_rep_id = staff.staff_id;
示例输出:
Customer_name |staff_name |
---------------------+------------+
玛丽·史密斯|迈克·希利尔|
帕特里夏·约翰逊|迈克·希利尔|
琳达·威廉姆斯|迈克·希利尔|
结论
在本教程中,我们学习了将SQL数据库中的两列组合起来创建新数据库的所有方法和技术。