首页 > 解决方案 > 仅当 Oracle 中的数据不为空时才连接

问题描述

我的 oracle 表中有一个包含一些数据的表

身份证号 姓名 年龄
1 亚当 21
2 麦克风 23
3 丹尼尔 无效的
4 乔什

现在我想将这 3 列连接为一列,我的结果应该如下

细节
亚当 (1-21)
迈克 (2-23)
丹尼尔 (3)
乔什 (4)

如果同时存在 S.ID 和年龄,则两者都应包含在用连字符分隔的大括号内。例如:亚当(1-21)

当年龄值为空或没有任何值时,只有 S.ID 应包含在大括号内。S.ID 旁边不应有连字符,大括号内不应有“null”。例如:丹尼尔 (3)

我发现在 oracle 中使用查询很难做同样的事情。

标签: sqloracleoracle19c

解决方案


您可以尝试以下方法

SELECT
     "Name" || ' (' || "S.ID" || CASE 
         WHEN "Age" IS NULL OR TRIM("Age")='' THEN ''
         ELSE '-' || "Age"
     END || ')' as Details
FROM tb

它使用 case 表达式在将其包含在字符串中之前检查年龄的空值和空值。

查看工作演示 db fiddle

让我知道这是否适合您。


推荐阅读