在 PostgreSQL 中,进行多字段的拼接,并且忽略掉是空值的字段

在pgsql中,进行多字段的拼接,并且可以忽略掉为空值的字段

一、多字段的拼接

  用 concat 进行多字段的拼接,concat(a, b, c, ...) 如下:

select concat(c1, c2 , c3) from table_name

 

二、多字段的拼接,忽略掉是 NULL 的字段

  使用 CONCAT_WS 函数来实现以指定分隔符拼接多个字段,并且会自动忽略值为 NULL 的字段

SELECT CONCAT_WS('~', a, b, c) AS concatenated_result FROM t1;

示例

假设 t1 表的数据如下:
abc
1 2 3
NULL 5 6
7 NULL NULL

 

执行上述 SQL 查询后,结果如下:

 

concatenated_result
1~2~3
5~6
7

 

可以看到,当某个字段的值为 NULL 时,该字段不会参与拼接。

三、多字段拼接,忽略掉是 NULL 和 空字符串 的字段

  要实现当字段内容为空字符串时也不进行拼接,你可以在使用 CONCAT_WS 函数之前,先把空字符串转换为 NULL,这样 CONCAT_WS 函数就会自动忽略这些字段。

SELECT 
    CONCAT_WS('~', 
        NULLIF(a, ''), 
        NULLIF(b, ''), 
        NULLIF(c, '')
    ) AS concatenated_result
FROM 
    t1;

示例

 

假设 t1 表的数据如下:

 

abc
1 2 3
'' 5 6
7 '' ''

 

执行上述 SQL 查询后,结果如下:

 

concatenated_result
1~2~3
5~6
7

 

这样,无论是字段值为 NULL 还是空字符串,都不会参与拼接。

 

ok,解决问题~~

 

posted @ 2025-03-05 16:44  BillyYang  阅读(183)  评论(0)    收藏  举报