使用分隔符连接非空字符串值的 Oracle PL/SQL 代码

问题描述 投票:0回答:1

我有五个字符串str1 str2 str3 str4 str5。这些字符串可能为空,也可能不为空。如何编写代码以仅将非空字符串与分隔符 ',' 连接起来?

例如1:只有str1和str3不为空 str1 - 'A' str3 - 'B' 所需输出:A/B

例如2:只有str2不为空 str2 - 'A' 所需输出:A

oracle plsql
1个回答
0
投票

您可以使用

CASE
表达式仅将非
NULL
值与前导分隔符连接起来,然后修剪初始分隔符:

DECLARE
  str1 VARCHAR2(1) := 'A';
  str2 VARCHAR2(1) := 'B';
  str3 VARCHAR2(1) := NULL;
  str4 VARCHAR2(1) := 'D';
  str5 VARCHAR2(1) := NULL;
  combined VARCHAR2(9);
BEGIN
  combined := SUBSTR(
                   CASE WHEN str1 IS NOT NULL THEN str1, ','||str1 END
                || CASE WHEN str2 IS NOT NULL THEN str2, ','||str2 END
                || CASE WHEN str3 IS NOT NULL THEN str3, ','||str3 END
                || CASE WHEN str4 IS NOT NULL THEN str4, ','||str4 END
                || CASE WHEN str5 IS NOT NULL THEN str5, ','||str5 END,
                2
             );
  DBMS_OUTPUT.PUT_LINE(combined);
END;
/
© www.soinside.com 2019 - 2024. All rights reserved.