sql - 仅当 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 中使用查询很难做同样的事情。
解决方案
您可以尝试以下方法
SELECT
"Name" || ' (' || "S.ID" || CASE
WHEN "Age" IS NULL OR TRIM("Age")='' THEN ''
ELSE '-' || "Age"
END || ')' as Details
FROM tb
它使用 case 表达式在将其包含在字符串中之前检查年龄的空值和空值。
让我知道这是否适合您。
推荐阅读
- android - 来自 ApplicationProvider.getApplicationContext 的错误应用程序实例
- android - 发布我的新应用时出现敏感权限问题
- python - 环境变量名称不会替换为气流 DAG 中的值
- macos - macos vscode超级用户无法复制粘贴
- stack - 删除 cflinuxfs2 后无法将应用程序推送到 Bluemix
- c++ - SDLnet 检查 TCPsocket 是否已关闭连接
- ansible - Ansible在任务中指定--key-file
- php - mysqli函数导致数据库连接失败
- ios - 显示加载活动 Webkit
- machine-learning - 在进行迁移学习时,保留哪些 CNN 全连接层的最佳实践是什么?