oracle clob去重复,Oracle SQL - 使用重复节点从XML中提取clob值(Oracle SQL - Extracting clob value from XML with repe...

Oracle SQL - 使用重复节点从XML中提取clob值(Oracle SQL - Extracting clob value from XML with repeating nodes)

我试图在一个表上运行SQL(名为test_xml ,列xml_data [数据类型xmltype])。 该列包含带重复节点的xml( test_3 )。 当节点包含非clob大小的数据时,以下语句成功运行:

SELECT

extractvalue (Value (wl), '*/test_3')

FROM test_xml

, TABLE (xmlsequence (extract (xml_data, '*/record'))) wl

但在test_3节点包含大量数据时失败:

ORA-01706:用户函数结果值太大

我修改了我的查询:

SELECT

extractvalue(Value (wl), '*/test_3').getClobVal()

FROM test_xml

, TABLE (xmlsequence (extract (xml_data, '*/record'))) wl

但这失败了:

ORA-22806:不是对象或REF

I am attempting to run SQL on a table (called test_xml with a column xml_data [data type xmltype]). The column contains xml with repeating nodes (test_3). The following statement runs successfully when the node contains data of a non clob size:

SELECT

extractvalue (Value (wl), '*/test_3')

FROM test_xml

, TABLE (xmlsequence (extract (xml_data, '*/record'))) wl

but fails when test_3 node contains a lot of data:

ORA-01706: user function result value was too large

I amended my query:

SELECT

extractvalue(Value (wl), '*/test_3').getClobVal()

FROM test_xml

, TABLE (xmlsequence (extract (xml_data, '*/record'))) wl

but this fails with:

ORA-22806: not an object or REF

原文:https://stackoverflow.com/questions/13783403

2019-11-27 16:29

满意答案

这是通过Oracle论坛收到的回复解决的:

从Oracle发行版11.2.0.2开始:

SELECT x.*

FROM test_xml t

, XMLTable(

'/*/record'

passing t.xml_data

columns

test_3 clob path 'test_3'

) x

;

我的数据库版本是10.2.0.4,因此需要以下'技巧':

SELECT dbms_xmlgen.convert(x.test_3.getClobVal(), 1) as test_3

FROM test_xml t

, XMLTable(

'/*/record'

passing t.xml_data

columns

test_3 xmltype path 'test_3/text()'

) x

;

感谢你去odie_63

This was resolved via a response received on Oracle Forums:

From Oracle release 11.2.0.2:

SELECT x.*

FROM test_xml t

, XMLTable(

'/*/record'

passing t.xml_data

columns

test_3 clob path 'test_3'

) x

;

My database version is 10.2.0.4 hence the following 'trick' is required:

SELECT dbms_xmlgen.convert(x.test_3.getClobVal(), 1) as test_3

FROM test_xml t

, XMLTable(

'/*/record'

passing t.xml_data

columns

test_3 xmltype path 'test_3/text()'

) x

;

Thanks go to odie_63 for this

2012-12-09

相关问答

没有太大区别,getCharacterStream更适合unicode数据。 查看链接http://community.actian.com/wiki/Manipulating_SQL_CLOB_data_with_JDBC Not much difference, getCharacterStream is better for unicode data. Check the link http://community.actian.com/wiki/Manipulating_SQL_CLOB_...

将当前值复制到文本编辑器,修改它,然后尝试使用新字符串更新值将是痛苦的。 如果它超过4000个字符(这可能是你使用CLOB存储的话),那么你必须在PL / SQL中完成它; 如果它超过32K,则必须以块的形式创建和更新临时CLOB,这意味着将字符串拆分。 如果您首先将CLOB转换为XMLType,则可以通过SQL执行此操作。 您可以使用updatexml函数 ,使用合适的XPath参数来匹配您感兴趣的行和属性: select updatexml(xmltype(t.xmldata), '//ite...

这是通过Oracle论坛收到的回复解决的: 见论坛帖子 从Oracle发行版11.2.0.2开始: SELECT x.*

FROM test_xml t

, XMLTable(

'/*/record'

passing t.xml_data

columns

test_3 clob path 'test_3'

) x

;

我的数据库版本是10.2.0.4,因此需要以下'技巧': SELECT dbms_xmlgen.con...

您需要提供相对于XPath标识的节点要提取的每个(叶子)节点的完整路径。 您还需要引用元素,而不是属性(使用您正在使用的'@语法)。 select x.*

from xml_t y

cross join xmltable(

xmlnamespaces('http://qbc.net/de/City/A-Ex/1.0' as "ext",

'http://xyz.ht.net/yy/Asset/1.0' as "df",

'http://pol.org/ni-core/2.0' ...

你的假设可能是正确的。 在全文搜索中,术语是“停用词”。 如果您没有定义自己的停止列表,则使用默认值: CTXSYS.DEFAULT_STOPLIST 。 有关默认的英语停止列表,请参阅此文章。 'in'这个词就在其中。 您可以使用CTX_DDL包删除停用词或创建自己的停止列表,特别是CTX_DDL.REMOVE_STOPWORD或CTX_DDL.CREATE_STOPLIST 。 Your assumption is probably right. In full text search the...

您的顶级Energy节点中有一个命名空间,因此您没有匹配; UPDATEXML文档显示您可以选择提供命名空间字符串。 所以你可以使用你的示例数据来做到这一点: create table tmp_tab_noemail_test (sce_msg clob);

insert into tmp_tab_noemail_test values (

' ...

替换和度量长度差异技巧shoudl适用于您,其结果与REGEXP_COUNT相同(在解析XML和计数元素时,不需要以相同的精度进行,这应该具有最终精度)。 REPLACE方法的优点是它将是最快的实施。 简单 用NULL替换原始字符串中搜索的子字符串的每个出现 计算原始字符串和替换字符串长度的差值 将结果除以子字符串的长度以获得结果计数 。 select

sum(REGEXP_COUNT(clobtype_column_withXMLs, '/Node_Closing_tag', 1)) cnt...

您更新的XML具有命名空间,最终揭示了该问题。 您需要将命名空间指定为XML提取的一部分,使用XMLTable方法更简单; 在这种情况下,您可以将其视为默认命名空间: select itc.element_name, x.user_classification3

from i_transaction itc

cross join xmltable(

xmlnamespaces(default 'http://xmlns.oracle.com/apps/otm'),

'/TenderOf...

如果你愿意,你可以寻找PIVOT输出的方法,但是这里是你如何阅读这样一个XML的开始 - 为简单起见,假设XML位于XMLTYPE类型的名为my_xml的变量中。 SELECT header_string, attribute_name, attribute_value

FROM (WITH xm AS (SELECT my_xml AS x FROM DUAL)

SELECT header_string, linked_hash_map

FROM xm,

...

这是一个简单的例子。 CREATE TABLE "XML_STUFF"

( "COLUMN1" NUMBER(*,0) NOT NULL ENABLE,

"XML_STUFF" "SYS"."XMLTYPE" ,

CONSTRAINT "XML_STUFF_PK" PRIMARY KEY ("COLUMN1")

USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255

STORAGE(INITIAL 65536 NE...

相关文章

以下资料整理自网络,觉的有必要合并在一起,这样方便查看。主要分为两部分,第一部分是对《db-data-

...

目前的情况是这样的 1,我有一个表,里面有一个ID,名字,昵称 2,我现在想写一个SQL语句,把名

...

有表格如下: t_table 8 想得到这样的结果:(只取有重复的第一个,相同的排除,例如f) 1 a

...

因小弟第一次发帖,问题可能描述的不是很清楚,请大家谅解,现请教大家一个SQL实现(ORACLE),情况

...

MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就

...

哪位高人知道在Oracle的存储过程中如何调用sql loader?最好有详细例子或者代码参考一下呗?

...

中文名: Oracle Database 11g SQL开发指南 原名: Oracle Data

...

我在ORACLE10G中,有个表的字段是文章的内容CLOB字段,我通过LIKE 查询这个字段的内容,但

...

要对比两张表TA和TB: select * from TA a where not exists

...

导入clob很简单。但是blob好像没有提供方法,所以改了一下源码,重新编译替换class文件,竟然成

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值