如何合并Postgres中Concact字符串中的空/null值



我有下面的CREATE View语句,其中连接了几个字段。它获取第一个字段的前100个字符,然后附加一个整数字段

CREATE OR REPLACE VIEW $"schema_1"."tbl_225_customid" AS 
SELECT tbl_225.id,
("substring"((field_2)::text, 0, 100)::text) ||  ' (' || "field_1" || ')' as fullname
FROM schema_1.tbl_225;

当field_2中有数据时,这很好,但是,当field_2为null时,视图显示null,而不仅仅是表达式的整数部分。

我试着用这样的联合语句来包装它,但它抛出了一个错误。

CREATE OR REPLACE VIEW $"schema_1"."tbl_225_customid" AS 
SELECT tbl_225.id,
COALESCE(("substring"((field_2)::text, 0, 100)::text),'') ||  ' (' || "field_1" || ')' as fullname
FROM schema_1.tbl_225;

如何编写concat字符串,使其在field_2为null的情况下使用",并且仍然产生值?

我建议简单地使用字符串函数concat_ws():它在设计中忽略了null的值,所以你不需要担心它们:

select 
tbl_225.id,
concat_ws('', substring(field_2::text, 0, 100), ' (' || field_1 || ')') as fullname
from schema_1.tbl_225;

使用coalesce():

SELECT tbl_225.id,
COALESCE(substring(field_2::text, 0, 100) , '') ||  coalesce(' (' || "field_1" || ')', '') as fullname
FROM schema_1.tbl_225;

最新更新