温馨提示×

PgSQL wm_concat与正则表达式结合

小樊
82
2024-09-06 04:26:53
栏目: 云计算

在 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 函数将每个用户的电子邮件地址连接成一个逗号分隔的字符串。

请注意,~* 是一个正则表达式匹配操作符,用于执行不区分大小写的匹配。在这个示例中,我们使用了一个简单的电子邮件正则表达式来过滤出有效的电子邮件地址。你可以根据需要修改正则表达式以满足你的需求。

0