SQL - STRING_AGG() 函数



SQL 的STRING_AGG() 函数是一个聚合函数,用于连接字符串值。

它接受两个参数strseparator,连接字符串表达式的值,并在它们之间放置分隔符值。它返回一个带有指定分隔符的新连接字符串。

返回类型取决于第一个参数(字符串表达式),如果表达式的类型是字符串,则结果类型将与字符串表达式类型相同。

注意 - 分隔符不会添加到字符串的末尾。

以下是 SQL STRING_AGG() 函数的语法:

STRING_AGG ( exp, separator) [ <order_clause> ])

参数

  • exp - 它是任何类型的表达式。

  • separator - 它是 varchar 或 nvarchar 类型的表达式,用作连接字符串的分隔符。

  • <order_clause> - 它使用 GROUP 子句指定连接结果的排序顺序。

示例

在下面的示例中,我们使用 SQL STRING_AGG() 函数将内容行连接到单个字段中。

假设我们创建了一个名为Customers的表,如果两个或多个客户具有相同的 ID,我们可以使用指定的分隔符将客户数据(例如他们的姓名、薪水、地址等)连接到单个字段中,GROUP BY 列名ID

以下是使用CREATE语句创建名为 Customers 的表的语句:

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   |  
+-----------------+ 
sql-string-functions.htm
广告