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