Oracle中仅非空字段参与拼接的SQL查询实现问题
Oracle用户信息字段拼接查询实现
以下是满足需求的查询写法,兼容Age为NULL和存储空值字符串两种场景:
SELECT CASE WHEN S.ID IS NOT NULL AND S.Age IS NOT NULL AND TRIM(S.Age) != '空值' THEN S.Name || ' (' || S.ID || '-' || S.Age || ')' ELSE S.Name || ' (' || S.ID || ')' END AS Details FROM 你的实际表名 S;
如果你的Age字段为数值类型,仅存在NULL一种空值情况,可以使用更简洁的NVL2写法:
SELECT S.Name || ' (' || S.ID || NVL2(S.Age, '-' || S.Age, '') || ')' AS Details FROM 你的实际表名 S;
结果验证
针对你提供的样例数据,两种写法都会返回符合要求的结果:
| Details |
|---|
| Adam (1-21) |
| Mike (2-23) |
| Daniel (3) |
| Josh (4) |
内容的提问来源于stack exchange,提问作者Nandu
相关产品推荐
相关产品推荐

