如何提取 xmltype 列的一部分

How to extract portion of an xmltype column

提问人:Tams 提问时间:11/6/2023 更新时间:11/6/2023 访问量:21

问:

这是相关 xml 的快照

XML 布局

我需要的列位于 和 之间,但它位于名为 Flexfiltervalue 的 xmltype 列中。

如何编写sql来提取该值及其相关的ConditionGroupCode

我尝试了各种选择

  1. 选择 t.CONDITION_GROUP_CODE 作为 ConditionGroupCode, instr((t.FLEX_FILTER_VALUE).getClobVal(),''), instr((t.FLEX_FILTER_VALUE).getClobVal(),''))作为clobval 从 ZX_CONDITIONS t 其中 t.condition_group_code = 'SU CC 50 1'

这返回了错误的值

  1. SELECT t.FLEX_FILTER_VALUE.getStringVal() FROM ZX_CONDITIONS t

这产生了一个错误:ORA-19011:字符串缓冲区太小 ORA-06512:在“SYS.XMLTYPE“,第 169 行

  1. select extract(t.FLEX_FILTER_VALUE, '/').getClobVal(), <'value>' 从 ZX_CONDITIONS t

这给了我缺少 EXPRESISON 错误

XML 提取 xmltype getstring instr

评论

0赞 Yitzhak Khabinsky 11/6/2023
在提问时,您需要提供一个最小的可重现示例:(1) DDL 和样本数据填充,即 CREATE 表和 INSERT SQL 语句。(2) 需要执行的操作,即逻辑和代码尝试在 T-SQL 中实现它。(3) 期望的输出,基于上面 #1 中的示例数据。(4) 您的 RDBMS 及其版本。问题中的所有内容都是文本,没有图像。
0赞 Tams 11/8/2023
我不想创建表...我有一个 Oracle 表,该表已播种,并且在配置发生时数据会填充到该表中。我无法通过后端将数据插入此表。所有数据都会在配置发生时插入。我想要的输出是获取介于 <value>XXX</value 之间的数据>

答: 暂无答案