SQL STRING_AGG() 函数
SQL STRING_AGG() 函数是一个用于连接字符串值的聚合函数。
它接受两个参数 str 和 separator ,将字符串表达式的值连接起来,并在它们之间放置分隔符值。它返回一个使用指定分隔符连接的新字符串。
返回类型取决于第一个参数(字符串表达式),如果表达式类型是字符串,则结果类型将与字符串表达式类型相同。
注意 − 分隔符不会在字符串末尾添加。
下面是SQL STRING_AGG() 函数的语法 −
STRING_AGG ( exp, separator) [ <order_clause> ])
参数
- exp −它是任意类型的表达式。
-
separator −它是varchar或nvarchar类型的表达式,用作连接字符串的分隔符。
-
< order_clause>−它指定了在GROUP子句内使用的连接结果的排序顺序。
示例
在下面的示例中,我们使用SQL的 STRING_AGG() 函数将内容行连接到单个字段中。
假设我们已经创建了一个名为 Customers 的表,如果两个或多个客户具有相同的ID,我们可以按照指定的分隔符 GROUP by 列名 ID 将客户的数据(如姓名、工资、地址等)连接到单个字段中。
以下是创建名为Customers的表的 CREATE 语句−
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
FIRST_NAME VARCHAR (20),
LAST_NAME VARCHAR(20),s
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2));
现在,让我们使用以下的INSERT语句插入一些具有相同ID的客户记录 –
INSERT INTO CUSTOMERS VALUES (1, 'Dinesh','Verma', 33, 'Hyderbad', 2200.00 );
INSERT INTO CUSTOMERS VALUES (1, 'Ganesh','Kumar', 30, 'Lucknow', 2900.00 );
INSERT INTO CUSTOMERS VALUES (1, 'Reeta','Sharma', 23, 'Delhi', 3100.00 );
以下SQL查询将连接在 Customers 表中具有相同ID的客户的行数-
SELECT ID, STRING_AGG(FIRST_NAME,';') All_customer_with_same_Id FROM CUSTOMERS GROUP BY ID;
输出
以下是上述查询的输出结果:
+----+----------------------------+
| ID | All_customer_with_same_Id |
+----+----------------------------+
| 1 | Dinesh;Ganhesh;Reeta;Gane |
| 2 | Ramesh |
| 3 | Khilan;kaushik |
| 4 | Chaitali |
+----+----------------------------+
示例
以下是另一个使用 STRING_AGG() 函数的示例,我们将 FIRST_NAME 列的内容按列 LAST_NAME 分组进行连接。
SELECT STRING_AGG(FIRST_NAME, '/') NEW_LIST FROM CUSTOMERS GROUP BY LAST_NAME;
输出
以下是上述SQL查询的输出结果 –
+-----------------+
| NEW_LIST |
+-----------------+
| kaushik/Ganhesh |
| Ganesh/Ramesh |
| Chaitali |
| Reeta |
| Dinesh/Khilan |
+-----------------+