Oracle从xml中提取截断值

2023-12-22

我们有一个 CLOB 列,在其中存储相当简单的 XML,我需要从中提取其中一个标签的属性。我相信 select 语句是正确的,因为我得到了该值的一部分,但它会将其截断为 80 个字符。

这是 XML 的片段...

<?xml version="1.0" encoding="UTF-8"?>
<service_orders count="1">
   <service_order order_number="fakefakefake" id="fakefakefake">
      <customer>
         <customer_id>ABCDE12346</customer_id>
         <first_name>FAKE</first_name>
         <last_name>CUSTOMER</last_name>
      </customer>
...
    <images count="2">
       <image src="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here" thumbnail="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here_thumb"/>
</images>
...

...这是 SQL 的片段...

select
    xmltype(contact_data).extract('/service_order/@order_number').getStringVal ordnum
   ,extract(xmltype(contact_data) ,'//images/image/@src') imgsrc
from
    my_table
where
    trunc(contact_date) = trunc(sysdate)
and extractvalue(xmltype(contact_data) ,'/service_order/@order_number') = '&ordnum'

返回 URL 的开头,但如前所述,URL 被截断为 80 个字符。

我究竟做错了什么?


你在sqlplus中执行这个吗? Extract返回一个XMLType实例,并根据long http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12040.htm#i2699121变量,默认为 80。如果增加该值,您可以看到完整的 URL。

SQL> with x(contact_data) as (
select '<?xml version="1.0" encoding="UTF-8"?>
<service_orders count="1">
   <service_order order_number="fakefakefake" id="fakefakefake">
      <images count="2">
       <image src="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here"/>
        </images>
</service_order>
</service_orders>' from dual
)
select
    length(extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src')) as url_length,
    extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src') as url
from
    x;  

URL_LENGTH
----------
URL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       101
https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_b

增加 long 变量的值后,

SQL> set long 120

SQL> with x(contact_data) as (
select '<?xml version="1.0" encoding="UTF-8"?>
<service_orders count="1">
   <service_order order_number="fakefakefake" id="fakefakefake">
      <images count="2">
       <image src="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here"/>
        </images>
</service_order>
</service_orders>' from dual
)
select
    length(extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src')) as url_length,
    extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src') as url
from
    x;  

URL_LENGTH
----------
URL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       101
https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here

您可以使用 getStringVal 函数将 XMLType 转换为 varchar2,它不依赖于 long 变量。

SQL> set long 80

SQL> with x(contact_data) as (
select '<?xml version="1.0" encoding="UTF-8"?>
<service_orders count="1">
   <service_order order_number="fakefakefake" id="fakefakefake">
      <images count="2">
       <image src="https://s3.amazonaws.com/some_subfolder/deeper/deeper_still/ever_deeper/really_big_long_url_goes_here"/>
        </images>
</service_order>
</service_orders>' from dual
)
select
    length(extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src')) as url_length,
    extract(xmltype(contact_data),'/service_orders/service_order/images/image/@src').getStringval() as url
from
    x; 

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

Oracle从xml中提取截断值 的相关文章

  • 创建自定义弹出对话框菜单

    我目前正在尝试在单击菜单按钮时实现弹出菜单 如下图所示 我尝试了 popupwindow 方法 但无法实现确切的情况 这就是我正在尝试的方式 private View OnClickListener showPopupWindow retu
  • powershell xml排序节点和替换子节点

    我正在尝试使用 powershell 和 xml 做一些非常简单的事情 但没有遇到任何麻烦 基本上我试图采用以下 xml 并按名称对机器元素进行排序 然后将它们放回到 XML 中 以便我可以保存回文件中 如果输出 new 对象 排序似乎有效
  • Oracle 更新/插入卡住、DB CPU 为 100%、并发度高、来自客户端的 SQL*Net 等待消息

    我们有一个 JavaEE 应用程序在 Weblogic 上针对 Oracle 11g DB 运行 使用瘦 JDBC 驱动程序 最近 我们在生产中发生了一系列事件 其中某个表的更新和插入被卡住或花费的时间比正常情况长得多 而且没有明显的原因
  • XML 模式不区分大小写的简单类型字符串枚举

    我的 XML 架构 xsd 文件中需要不区分大小写的字符串枚举类型 我可以通过执行以下操作来不区分大小写
  • 即使只有一个,是否也可以始终以数组形式获取 XML 节点?

    我正在使用空手道测试 SOAP Web 服务 其中一种方法是 根据请求 响应可以返回一个或多个巧合 将 XML 响应转换为 JSON 时 如果只有一个结果 则将其解释为对象 但如果有多个结果 则将其解释为数组 有什么方法可以使给定路径始终以
  • 如何仅从 XML 生成 JAXB 类

    我需要从不提供架构的 xml 生成类 我知道这几乎没有用 但事实是我们有 xml 它是结构化的 我们应该能够从 xml 创建模型 过去我都是手工完成的 但是当前我正在使用的 xml 文档非常大 我的时间可能会更好地花在构建满足我需要的东西上
  • 文件已存在时创建 XmlWriter 时出错

    在我的代码中 我有这些行 XmlWriterSettings writerSettings new XmlWriterSettings writerSettings Indent true XmlWriter writer XmlWrite
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n
  • count(distinct) over (partition by... 在 Oracle SQL 中不起作用

    我想数一下distinct day number过去 30 天 但是 distinct 函数不能与over 如果我删除distinct 它会给我总数day number but day number可以有很多重复的 所以这就是为什么我想添加
  • 调试 xslt 的工具

    我有一个 Java servlet 它生成 XML 使用 XSLT 样式表对其进行翻译 然后显示生成的 HTML 这是我第一次使用 XSLT 调试 XSLT 的好方法是什么 我也有 或可以获得 一些示例 XML 文件来应用转换 但我什至不确
  • 关于pl/sql异常的问题

    以下文字摘录自oracle文档Oracle Database PL SQL 语言参考 11g 第 1 版 11 1 未处理的异常也会影响 子程序 如果退出子程序 成功后 PL SQL 将值分配给 输出参数 但是 如果您退出 带有未处理的异常
  • C# Xml-使用 IXmlSerialized 序列化派生类

    我有一个与 XML 序列化兼容的基类和一个实现 IXmlSerialized 的派生类 在此示例中 基类确实实现了 IXmlSerializable using System Diagnostics using System Text us
  • 在 apex 中根据 2 种不同类型的用户进行自定义身份验证

    我有一种身份验证方案 目前仅验证用户是否在一个表中 即雇主表中 现在我希望这个身份验证方案来验证用户是雇主还是雇员 并且根据他们是雇主还是雇员 它应该将他们重定向到不同的页面 首先 我如何在身份验证脚本中包含第二个表 我最大的问题是 当员工
  • Oracle DB & SQL Developer:“错误报告:执行已完成,但有警告” - 如何*查看*该警告?

    我正在设置一个本地 Oracle 11g 数据库 我们已经运行的另一个数据库的克隆 我正在 SQL Developer 中运行一堆生成的 PL SQL 命令 我得到输出 Error starting at line x in command
  • 每组最大 n 个 SQL 查询的高性能方法

    我正在尝试构建一个基础设施 以便根据需要快速运行回归 从包含我们网络服务器上所有历史活动的数据库中提取 apache 请求 为了通过确保我们仍然回归来自较小客户的请求来提高覆盖范围 我想通过为每个客户检索最多 n 个 为了这个问题 假设 1
  • postgresql 中的咨询锁超时

    我正在从 ORACLE 迁移 目前我正在尝试移植此呼叫 lkstat DBMS LOCK REQUEST lkhndl DBMS LOCK X MODE lktimeout true 这个功能 http docs oracle com cd
  • 在 Postman 中解析对另一个请求的 XML 响应

    我必须测试一些以 XML 格式响应的 Web 服务 并且我想解析从第一个请求到第二个请求调用的响应 Ex 我提出第一个请求
  • NSXMLParser 解析使用 Windows-1256 编码的 xml 文件

    我想解析 Windows 1256 编码的 rss 文件 但解析器没有读取它 我用 UTF8 编码做了很多解析 但只有这个不起作用 为什么 带有 Windows 1256 的 rss 文件 http youm7 com Rss asp 解决
  • xslt 展平 DocBook para 元素中的子元素

    我正在将一些生成的 DocBook xml 来自 Doxygen 转换为我公司的 xml 这实际上是 DocBook 的子集 有一个类似如下的 para 元素
  • python:xml.etree.ElementTree,删除“命名空间”

    我喜欢 ElementTree 解析 xml 的方式 特别是 Xpath 功能 我有一个带有嵌套标签的应用程序的 xml 输出 我想按名称访问此标签而不指定名称空间 这可能吗 例如 root findall molpro job 代替 ro

随机推荐

  • Android SQLITE非法状态异常[重复]

    这个问题在这里已经有答案了 我使用以下代码将项目添加到数据库 public static void insertQuestion Context c JSONArray jarr String search throws JSONExcep
  • 通过随机点绘制好看的贝塞尔曲线

    我使用 javascript 和 RaphaelJS 来通过随机点绘制一条平滑的线 并输出到 SVG 该线严格水平移动 不会沿 X 轴返回 目前 我正在使用三次贝塞尔曲线来绘制从一点到另一点的线 问题是 这条线看起来不够好 两条曲线在一个点
  • 在 Android Studio 3.2 中看不到 find-sample-code 选项

    In 文档 https developer android com studio write sample code inline他们讲述查找代码示例选项 导入示例 但我在 Android Studio 3 2 中看不到它们 在代码中 突出
  • 如何计算 QueryDSL 中结果组的数量?

    如何在 QueryDSL Java 中 中实现组计数 背景 我正在表上实现分页搜索 我想在返回结果之前对结果进行分组 除了平常的LIMIT x OFFSET y查询时 我还想接收总行数 这是一页的 简化的 SQL 查询 SELECT x y
  • const char[] 和 const char* 之间的区别

    So 本文 https glandium org blog p 2361正在讨论声明字符串文字的用法 例如const char foo foo 它以以下声明结束 const char foo foo 几乎从来都不是你想要的 相反 您想使用以
  • 如何使用 A-Star 或 Dijkstra 算法解决 15 个难题?

    我在一本人工智能书籍中读到 用于模拟或游戏中寻路的流行算法 A Star Dijkstra 也被用来解决著名的 15 谜题 谁能给我一些关于如何将 15 个拼图简化为节点和边图的指示 以便我可以应用其中一种算法 如果我将图中的每个节点视为游
  • 在 Reporting Services 2008 中显示时间

    我的报告中有一个表 其中有数据类型的列Time 7 现在我在 Reporting Services 2008 中正确格式化它们时遇到问题 如果我将表达式的格式设置为 HH mm 它仍然显示11 12 000 我只想得到小时和分钟 喜欢11
  • 选择一个工具来创建/维护自定义 Eclipse 发行版

    我想选择一个工具来创建 维护我的自定义 eclipse distrib 从下一个 3 6 开始 通过研究之前的问题 主要竞争者似乎是 Pulse http www poweredbypulse com Yoxos http ondemand
  • 在python中获取类和实例的属性

    在 python 中工作下一个代码 class MyClass object field 1 gt gt gt MyClass field 1 gt gt gt MyClass field 1 当我想要自定义字段的返回值时 我使用下一个代码
  • 当我使用 angularJS ng-repeat 时,它不显示我在 javascript 中附加的内容

    在 HTML 中 我想显示多行项目 任务时间线 在每一行中 gantt items gantt days 用于绘制 365 个小框 并呈现 一年 365 天 并且每一行需要显示一个蓝色块 表示该任务的分配时间段 timeline item
  • SignalR 2.X.X 的 Context.User.Identity.Name 为 null。如何修复它?

    这让我发疯 我正在使用最新的 signalR 版本 2 0 2 这是我的集线器代码 OnConnected public override Task OnConnected User is null then Identity and Na
  • C++ 将 ostream 作为参数传递

    我正在为一个虚拟名片盒做一个家庭作业项目 它需要一个主类 一个名片盒类和一个卡片类 为了将所有 卡片 的内容输出到控制台 赋值表示 main 应该调用 rolodex 类中的 show 函数 向其传递一个 ostream 和 show 然后
  • 如何让 VB6 与 Visual Source Safe 6.0 集成?

    我们在工作中使用 Visual Source Safe 6 0 VB6 应该能够与 Source Safe 顺利集成 这两个应用程序都安装在我的 PC 上 但 VB6 没有显示与 Source Safe 集成的选项 例如 签出文件 查看文件
  • 如何获取 python 解释器完整的 argv 命令行选项?

    我们从文档中得知 C 如果给出此选项 sys argv 的第一个元素将为 c 并且当前目录将添加到 sys path 的开头 允许该目录中的模块作为顶级模块导入 如何获得完整的解释器命令行选项 我需要它来解决这个问题 https githu
  • PySpark:如何在 For 循环中附加数据帧

    我正在对各个时间序列数据帧执行滚动中值计算 然后我想连接 附加结果 UDF for rolling median median udf udf lambda x float np median x FloatType series list
  • 检查 ios PhoneGap 中相机是否存在

    在我的照片中拍照时 我想在显示两种源类型之前检查相机是否存在phonegap应用 例如 iPad 1 没有相机 因此我不想显示从中选择源类型的弹出窗口Camera and My Photos 有什么东西在phonegap这告诉我相机是否存在
  • CSS 列 - 展开一个元素而不重新排列

    我在任何地方都找不到相同的场景 我已经在这上面浪费了过多的时间 我正在尝试实现一个正常的 webkit 列 其中元素在 y 方向上可单击 可展开 I drew this picture to explain what I mean 问题是
  • Postgres 查询执行时间

    In the MySQL命令行界面 当您执行查询时 它会告诉您打印结果后查询执行需要多长时间 在 Postgres 命令行界面中 psql 它不会告诉你 我知道如何配置日志记录 以便我可以从日志中获取信息 但将其打印到标准输出会更方便 就像
  • 如何在 Visual Studio 15 中禁用“运行执行到此处”?

    如何禁用将光标移动到代码左侧时出现的 运行执行到此处 按钮 当我在选择代码时不小心点击它时 真的很烦人 Uncheck 调试时显示运行以单击编辑器中的按钮在调试选项的最后
  • Oracle从xml中提取截断值

    我们有一个 CLOB 列 在其中存储相当简单的 XML 我需要从中提取其中一个标签的属性 我相信 select 语句是正确的 因为我得到了该值的一部分 但它会将其截断为 80 个字符 这是 XML 的片段