我有下面的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;