在 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
函数将每个用户的电子邮件地址连接成一个逗号分隔的字符串。
请注意,~*
是一个正则表达式匹配操作符,用于执行不区分大小写的匹配。在这个示例中,我们使用了一个简单的电子邮件正则表达式来过滤出有效的电子邮件地址。你可以根据需要修改正则表达式以满足你的需求。