从 CLOB(包含 XML)中提取特定值,同时为表的每一行创建一个分隔字符串。某些行上的 CLOB 值可能为空

2023-11-21

一些背景: 数据库是Oracle。我正在尝试为表的每一行创建一个分隔字符串。分隔字符串的某些值必须来自 CLOB(包含 XML)。某些行上的 CLOB 可能为空,这就是问题所在。

例如,我有一个表:“Item”,其中包含以下行:“Item_ID”、“Item_CD”、“Item_TXT”(CLOB)。该表有两行。一行将以下 XML 存储在“Item_TXT”中,另一行的“Item_TXT”为空。

<OuterTag>      
    <InnerTag>test</InnerTag>   
</OuterTag>     

我创建了以下 SQL 来返回分隔字符串的前 3 个元素:

SELECT 'Item%#'|| Item_ID ||'%#'|| Item_STAT_CD 
FROM Item; 

这成功了:

物品%#12345%#A

物品%#123456%#A

然后我尝试添加第四个元素(来自 CLOB 的值)。

SELECT 'Item%#'|| Item_ID ||'%#'|| Item_STAT_CD
EXTRACT(XMLTYPE(Item_TXT), '//OuterTag/InnerTag/text()').getStringVal()
FROM Item; 

此操作失败并出现以下错误:

ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.XMLTYPE", line 272
ORA-06512: at line 1

我已将此问题缩小到有时 Item_TXT 为 null 并且 XMLTYPE() 无法处理此问题。为了证明这一点,我运行了以下命令:

SELECT 'Item%#'|| Item_ID ||'%#'|| Item_STAT_CD
EXTRACT(XMLTYPE(Item_TXT), '//OuterTag/InnerTag/text()').getStringVal()
FROM Item
WHERE Item_TXT IS NOT NULL; 

这成功了:

项目%#12345%#A%#测试

有没有办法处理整个表,从 clob 中提取值(如果可用),否则向分隔字符串添加 null/nothing ?


顺便说一句,你的错误的原因是xmltype构造函数存在空 lob 缺陷。我个人总是使用xmltype.createxml(item_txt)反而。你会发现它同样有效,无需担心nvl etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 CLOB(包含 XML)中提取特定值,同时为表的每一行创建一个分隔字符串。某些行上的 CLOB 值可能为空 的相关文章

随机推荐

  • 如何在不使用 Azure Databricks 中的 Pyspark 缓存数据的情况下查询损坏记录?

    我遇到了数据块中记录损坏的问题 我们想要对损坏的记录进行计数 并将损坏的记录保存在特定位置作为增量表 为此 我们正在阅读使用PERMISSIVE并据此进行查询 corrupt record column 我们在 Azure Databric
  • 如何通过未按约定命名的字段关联 CakePHP 中的模型?

    我有两个带字段的表username同时 如何为本地表和外部表指定字段名称 我希望 CakePHP 会做类似的事情 ON T1 username T2 username 结果 如果没有任何更改 表将按以下条件连接 ON T1 id T2 t1
  • Android 中列表视图行中的 TextView 在滚动时显示重复值?

    我正在使用 ListView 的自定义适配器 其中有一个 TextView 和一个 Spinner 从 Spinner 中选择值后 将值复制到列表中相应同一行的 TextView 中 问题是 由于 ListView 中有超过 40 个元素
  • javac 响应“不是文件”,但文件存在

    当我使用 javac 编译一个 Java 文件时 它响应错误not a file 代替file not found 所以我尝试在 WSL 环境中编译它 它可以很好地编译相同的文件 然后我意识到可能是因为我把文件放在了OneDrive下 所以
  • 如何使用 .NET 从 SSRS 报告获取数据源信息

    我目前正在制作一个 ASP Net 和 C 页面 这是一些报告的前端 我还想从与报告相同的数据源运行一些查询 每个报告仅使用 1 个数据源 是否可以使用 ReportingService2005 或 ReportExecutionServi
  • 在 Eclipse 中一次更改多个文件的文本编码

    我的 Eclipse 项目中有一些 UTF 8 HTML 模板 Eclipse 一直将它们视为具有不同的编码 它说编码是 由内容决定的 我想强制正确的编码 我可以对单个文件强制使用它 但为父文件夹设置编码不会影响其中的文件 因为属性表中没有
  • 限制可执行文件在特定计算机上运行的最简单方法

    我正在尝试创建一个只能在一台机器上运行的可执行文件 实现这一目标的最简单方法是什么 许可证文件 或者是否有一个类似于网络连接 MAC 的机器地址 我可以将其硬编码到可执行文件中 如果它只在一台机器上运行 那么 只需保护该机器并仅将可执行文件
  • jQuery 幻灯片图像转换

    我的 jQuery 幻灯片有问题 我似乎无法弄清楚 在图像转换期间 幻灯片将闪烁白色 而不是很好地淡入下一张图片 我相信这与以下代码行有关 slideshow img first fadeOut 1000 next fadeIn 1000
  • iOS 11 主屏幕 Web 应用程序中的 Cookie 过期

    iOS 11 自 iOS 11 0 1 起仍然存在问题 主屏幕 Web 应用程序和 Cookie 似乎存在问题 当从服务器设置 cookie 时 iOS 11 似乎会间歇性地删除 cookie 其他时候 当服务器使 cookie 过期时 i
  • 如何判断按下的是哪个 SHIFT 键?

    在我的游戏中 我希望能够使用左右 Shift 键来实现不同的功能 在Java 或其他语言 中 有什么方法可以区分这两者吗 The KeyEvent class has only VK SHIFT which corresponds to b
  • Python 相当于 R 的 poly() 函数?

    我试图了解如何使用 scikit learn 或其他模块 在 R 中复制 poly 函数 例如 假设我在 R 中有一个向量 a lt c 1 10 我想生成三阶多项式 polynomial lt poly a 3 我得到以下信息 1 2 3
  • 在 C# 中将对象数组转换为 XML

    我知道没有内置转换器可以将对象数组转换为 XML 是否有一种快速基本的方法可以从数组中创建 XML 以帮助我在这个 XML 和我拥有的另一个 XML 之间进行 LINQ to XML 联接 您可以使用 Linq to XML 将现有数据结构
  • array.find 不适用于 Babel

    我正在使用 Babel 转译我的 ES2015 代码 然而它并没有翻译find对于数组 以下行引发错误TypeError options find is not a function let options 2 23 4 options f
  • 通过 PHP 加载图像

    我正在尝试通过 PHP 加载图像 但我不知道如何 文件名存储在数据库中 例如image jpg if GET image Client requesting image so retrieve it from DB id mysql rea
  • 如何让 gcc 跳过错误,但仍然输出它们。

    是否可以强制 gcc 报告错误 但继续编译它们 本质上 我试图在 c 文件中生成错误列表 但 gcc 总是在出现第一个错误时终止 我已经在谷歌上搜索了一段时间 据我所知 这并不是一个明显需要解决的问题 当 GCC 无法继续前进时 它就会终止
  • NodeJS keydown/keyup 事件

    我有兴趣看看是否可以将功能绑定到用户按下 释放键盘上的按键 到目前为止 我已经能够通过以下方式获取按键事件keypress模块和process stdin的原始模式 var keypress require keypress keypres
  • 错误:应用程序:transformClassesWithDexBuilderForDebug

    我在这个包中有一个 HillfortStore 类 package org wit hillforts models 弄乱了类中的包名称 缺少 s package org wit hillforts model 将类导入到具有错误包名的其他
  • 为什么一些有经验的程序员在变量之前写与值的比较? [复制]

    这个问题在这里已经有答案了 可能的重复 如何检查是否相等 0 i 或 i 0 为什么在 C 中经常看到 null variable 而不是 variable null 我一直在查看一些奇怪的教程以及一些 DirectX 代码 并注意到许多经
  • 如何读取特定文件夹内的所有文件

    我想读取 c net 中特定文件夹内的所有 xml 文件 XDocument doc2 XDocument Load PG SMNR XMLDataSourceUtil GetXMLFilePath Locale Products cate
  • 从 CLOB(包含 XML)中提取特定值,同时为表的每一行创建一个分隔字符串。某些行上的 CLOB 值可能为空

    一些背景 数据库是Oracle 我正在尝试为表的每一行创建一个分隔字符串 分隔字符串的某些值必须来自 CLOB 包含 XML 某些行上的 CLOB 可能为空 这就是问题所在 例如 我有一个表 Item 其中包含以下行 Item ID Ite