在 PostgreSQL 中,wm_concat
是一個聚合函數,用于將多行文本字段連接成一個逗號分隔的字符串
以下是一個使用 wm_concat
和正則表達式結合的示例:
WITH test_data AS (
SELECT * FROM (VALUES
('John', 'Doe', 'john.doe@example.com'),
('Jane', 'Doe', 'jane.doe@example.com'),
('Alice', 'Smith', 'alice.smith@example.com')
) AS t(first_name, last_name, email)
)
SELECT
first_name,
last_name,
string_agg(email, ', ') AS emails
FROM
test_data
WHERE
email ~* '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
GROUP BY
first_name,
last_name;
在這個示例中,我們首先創建了一個名為 test_data
的臨時表,其中包含了一些用戶的名字、姓氏和電子郵件地址。然后,我們使用 WHERE
子句過濾出符合電子郵件格式的行。最后,我們使用 string_agg
函數將每個用戶的電子郵件地址連接成一個逗號分隔的字符串。
請注意,~*
是一個正則表達式匹配操作符,用于執行不區分大小寫的匹配。在這個示例中,我們使用了一個簡單的電子郵件正則表達式來過濾出有效的電子郵件地址。你可以根據需要修改正則表達式以滿足你的需求。