我有五个字符串str1 str2 str3 str4 str5。这些字符串可能为空,也可能不为空。如何编写代码以仅将非空字符串与分隔符 ',' 连接起来?
例如1:只有str1和str3不为空 str1 - 'A' str3 - 'B' 所需输出:A/B
例如2:只有str2不为空 str2 - 'A' 所需输出:A
您可以使用
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;
/