sql - DB2 检索多次出现的 xml 元素
问题描述
我是查询 xml 的新手。
我有一个表 NOTIFICATIONS,它在属性 CONTENT 中包含一个 xml 字符串。属性的内容如下所示(格式化):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<interuptionLimitation xmlns="http://example.com/schema">
<person>1000000</person>
<date>2020-07-20</date>
<reason>Contact</reason>
<debtId>1</debtId>
<debtId>2</debtId>
</interuptionLimitation>
debId 可以出现多次
在 DB2 中,我希望输出为:
person date reason debtId
1000000 2020-07-20 Contact 1
1000000 2020-07-20 Contact 2
我有以下查询
SELECT X.*
FROM NOTIFICATIONS n
, XMLTABLE ('$I/interuptionLimitation ' PASSING XMLPARSE(document n.CONTENT) as "I"
COLUMN
"person" bigint PATH 'person',
"date" CHAR(10) PATH 'date',
"reason" VARCHAR(200) PATH 'reason',
"debtId" bigint PATH '@debtId') AS X
不幸的是,这没有输出。
有人可以帮我解决这个问题吗?
解决方案
尝试这个:
/*
WITH NOTIFICATIONS (CONTENT) AS
(
VALUES '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<interuptionLimitation xmlns="http://example.com/schema">
<person>1000000</person>
<date>2020-07-20</date>
<reason>Contact</reason>
<debtId>1</debtId>
<debtId>2</debtId>
</interuptionLimitation>'
)
*/
SELECT X.*
FROM NOTIFICATIONS n
, XMLTABLE
(
XMLNAMESPACES(DEFAULT 'http://example.com/schema'),
'$I/interuptionLimitation/debtId' PASSING XMLPARSE(document n.CONTENT) as "I"
COLUMNS
"person" bigint PATH '../person',
"date" CHAR(10) PATH '../date',
"reason" VARCHAR(200) PATH '../reason',
"debtId" bigint PATH '.'
) AS X;
推荐阅读
- javascript - 无法推入多维数组
- python - 套接字不断返回双字符串值
- javascript - 在按钮单击 Angular 上更新列表
- powershell - 如何使用powershell删除所有临时文件
- mongodb - MongoDB TTL,但要做其他事情
- sql - 如何将 1 列中的值分隔为 count 大于 1 的 2 个单独列。不希望行值在列名中
- f# - 计算表达式中的类型推断错误
- perl - 在 Strawberry Perl 中安装“autovivification”模块时出现问题
- mosquitto - 构建 Mosquitto MQTT 身份验证插件问题
- python - 将数据框转换为嵌套的 json