GROUP_CONCAT
函數是 MySQL 中的一個聚合函數,它可以將多行數據連接成一個字符串
在 Oracle 中,你可以使用 LISTAGG
函數來實現類似的功能。LISTAGG
函數可以將多行數據連接成一個字符串,并且可以指定分隔符。以下是 LISTAGG
函數的基本語法:
LISTAGG(column_name, delimiter) WITHIN GROUP (ORDER BY order_by_column)
這里有一個簡單的例子來說明如何在 Oracle 中使用 LISTAGG
函數。假設我們有一個名為 employees
的表,其中包含員工的 ID、姓名和部門信息:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR2(50),
department VARCHAR2(50)
);
INSERT INTO employees (id, name, department) VALUES (1, 'Alice', 'HR');
INSERT INTO employees (id, name, department) VALUES (2, 'Bob', 'IT');
INSERT INTO employees (id, name, department) VALUES (3, 'Charlie', 'HR');
INSERT INTO employees (id, name, department) VALUES (4, 'David', 'IT');
現在,我們想要查詢每個部門的員工姓名,并將它們連接成一個字符串。我們可以使用 LISTAGG
函數來實現這個需求:
SELECT department, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY name) AS employee_names
FROM employees
GROUP BY department;
這個查詢將返回以下結果:
DEPARTMENT | EMPLOYEE_NAMES
-----------+-----------------------
HR | Alice, Charlie
IT | Bob, David
在這個例子中,我們首先按照部門對員工進行分組,然后使用 LISTAGG
函數將每個部門的員工姓名連接成一個字符串。我們還指定了分隔符為逗號和空格(,
),并按照姓名的字母順序對結果進行排序。