如何合并作为 Postgres 中 Concat 字符串一部分的 empty/null 值?
How to coalesce an empty/null value that is part of Concact string in Postgres?
我有以下 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 而不仅仅是表达式的整数部分。
我尝试将它包装在这样的合并语句中,但它会引发错误。
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;
如果 field_2 为 null,我该如何编写 concat 字符串,它将使用 '' 并仍然产生值?
使用coalesce()
:
SELECT tbl_225.id,
COALESCE(substring(field_2::text, 0, 100) , '') || coalesce(' (' || "field_1" || ')', '') as fullname
FROM schema_1.tbl_225;
我建议为此简单地使用 string function concat_ws()
:它在设计上忽略了 null
值,因此您无需担心它们:
select
tbl_225.id,
concat_ws('', substring(field_2::text, 0, 100), ' (' || field_1 || ')') as fullname
from schema_1.tbl_225;
我有以下 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 而不仅仅是表达式的整数部分。
我尝试将它包装在这样的合并语句中,但它会引发错误。
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;
如果 field_2 为 null,我该如何编写 concat 字符串,它将使用 '' 并仍然产生值?
使用coalesce()
:
SELECT tbl_225.id,
COALESCE(substring(field_2::text, 0, 100) , '') || coalesce(' (' || "field_1" || ')', '') as fullname
FROM schema_1.tbl_225;
我建议为此简单地使用 string function concat_ws()
:它在设计上忽略了 null
值,因此您无需担心它们:
select
tbl_225.id,
concat_ws('', substring(field_2::text, 0, 100), ' (' || field_1 || ')') as fullname
from schema_1.tbl_225;