在plsql中为null时是不是可以不显示xmlelement?

Posted

技术标签:

【中文标题】在plsql中为null时是不是可以不显示xmlelement?【英文标题】:Is it possible to not show xmlelement when null in plsql?在plsql中为null时是否可以不显示xmlelement? 【发布时间】:2016-04-22 13:59:45 【问题描述】:

我有一个关于 plsql 中的 xmlelement 的问题。

我的代码如下:

SELECT XMLROOT(
  XMLELEMENT("FirstElement", 'data1'),
  (SELECT XMLAGG(
    XMLELEMENT( "IterationElement1",
      XMLFOREST(
        'value1' AS "FirstSubElement"
        'value2' AS "SecondSubElement"
      )
    ),
    XMLELEMENT( "IterationElement2", CASE WHEN a <> c THEN DECODE( a, 1, 'Y', 'N') ELSE NULL END),
    XMLELEMENT( "IterationElement3", CASE WHEN b <> c THEN DECODE( b, 1, 'Y', 'N' ) ELSE NULL END)
  )
  FROM T2 where id = in_id
  )
)
FROM T1
WHERE id = in_id

目前对于 IterationElement2 和 3,我希望它们在值为 null 时不显示在输出中,这在某种程度上可能吗?

【问题讨论】:

【参考方案1】:

大概是这样的

只有当 xmlelement 有值时才显示它

CASE WHEN a <> c THEN XMLELEMENT("IterationElement2",DECODE( a, 1, 'Y', 'N')) else null END

【讨论】:

似乎工作得很好,不知道为什么我没有想到将 case 语句移到元素之外

以上是关于在plsql中为null时是不是可以不显示xmlelement?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Oracle数据库查询中为没有数据的字段赋值为NULL

Sklearn:是不是可以在 OneHotEncoder 中为未知类别指定 null 或 NaN 值?

在查询SQL语句中为空或者不为空的字段应该怎么写?

jCrop API 在 IE 中为 null 或不是对象,但适用于 FF、Chrome 等

如何选择在 table1 中有值但在 table2 中为 NULL 的字段表?

PLSQL 使用技巧汇总贴(一个坑)