COUNT (*) 3
我在表中有一个clob列。在这个clob中,我有一个XML,我想计算一个标签在这个clob中出现的次数。
例如:
<TPQ>
<LTP>N<LTP>
<SUBLTP>N</SUBLTP>
<TIMES>446</TIMES>
<TIMES>321</TIMES>
<TIMES>546</TIMES>
<TIMES>547</TIMES>
<LTP>N</LTP>
<LTP2>N<LTP2>
<SUBLTP>N</SUBLTP>
<NODES>1</NODES>
<NODES>2</NODES>
<NODES>3</NODES>
<NODES>4</NODES>
<SUBLTP>H</SUBLTP>
<SUBLTP3>A</SUBLTP3>
<SUBLTP2>N</SUBLTP2>
<LTP2>N</LTP2>
</TPQ>
我想知道标签"TIMES"
出现4,标记"NODES"
出现4次。
我使用这个查询获得所有的时间标签,但我需要知道如何计数:
SELECT EXTRACT(xmltype.createxml(T.columnCLOB), '//TPQ/LTP/TIMES').getStringVal()
FROM table1 T;
,结果是:
Select语句的结果是
<TIMES>446</TIMES><TIMES>321</TIMES><TIMES>546</TIMES><TIMES>547</TIMES>
这在一个例子中,我需要一个动态clob列的解决方案,可以有x标签在里面,并不总是具有相同的结构。但是我只需要知道一个指定的标签出现了多少次。
您可以使用:
SELECT t.id,
x.tag_name,
COUNT(*)
FROM table_name t
CROSS JOIN XMLTABLE(
'//*'
PASSING XMLTYPE(t.xml)
COLUMNS
tag_name varchar2(100) path 'name()'
) x
GROUP BY t.id, x.tag_name
对于样本数据:
CREATE TABLE table_name (id NUMBER, xml CLOB);
INSERT INTO table_name (id, xml)
VALUES (1, '<TPQ>
<LTP>N</LTP>
<SUBLTP>N</SUBLTP>
<TIMES>446</TIMES>
<TIMES>321</TIMES>
<TIMES>546</TIMES>
<TIMES>547</TIMES>
<LTP>N</LTP>
<LTP2>N</LTP2>
<SUBLTP>N</SUBLTP>
<NODES>1</NODES>
<NODES>2</NODES>
<NODES>3</NODES>
<NODES>4</NODES>
<SUBLTP>H</SUBLTP>
<SUBLTP3>A</SUBLTP3>
<SUBLTP2>N</SUBLTP2>
<LTP2>N</LTP2>
</TPQ>');
输出:TAG_NAME
可以使用XPATH函数
with
x as
(select xmltype('<TPQ><LTP>N</LTP><SUBLTP>N</SUBLTP>
<TIMES>446</TIMES><TIMES>321</TIMES><TIMES>546</TIMES><TIMES>547</TIMES>
<LTP>N</LTP><LTP2>N</LTP2><SUBLTP>N</SUBLTP>
<NODES>1</NODES><NODES>2</NODES><NODES>3</NODES><NODES>4</NODES>
<SUBLTP>H</SUBLTP><SUBLTP3>A</SUBLTP3><SUBLTP2>N</SUBLTP2><LTP2>N</LTP2></TPQ>') xval
from dual)
select z.*
from x, xmltable ('count(/TPQ/TIMES)' passing x.xval) z;
相关内容
- 如何使用Datapump从oracle 11g(linux)导出模式到windows(19c) &g
- Oracle 11g嵌套Case语句计算
- 如何将长文本转换为UTF8在Oracle 11g?
- 从oracle 11g的一个列中打印两个不同列中的数字和字符
- 在我的oracle 11g中没有Scott模式
- Oracle 11g - Insert Into Select / Insert and update (dbfiddl
- 升级到Oracle 11g到19c
- 如何在cli Windows 10中更改默认Oracle 11g到19c ?
- 在 Oracle 11g 中使用假脱机不会将 SELECT 查询的结果发送到文件
- 正在恢复oracle 11g express edition工作区帐户
- 如何剥离字符串以获得确切的预期输出,而不管该字符串在Oracle 11g中如何格式化
- 计算分隔的月份(oracle 11G)
- 如何从Oracle.jl连接到Oracle 11g XE ?
- 如何限制Oracle 11g的查询结果?
- 在oracle 11g中无法运行大型表的连接
- 如何在oracle 11g中选择日期25-11-20的所有条目?
- 如何找到小时时差所有记录从SQL表在oracle 11g?
- LINQ avoid OUTER APPLY Oracle 11g
- 从dockerhub挂载卷到oracle 11g XE容器后,无法连接
- 在WINDOWS 10机器上安装ORACLE 11g
最新更新
- Mapbox -悬停在多边形上根本不起作用.如何让它与矢量数据的工作?
- CSS z-index和移动设备
- 找不到 Flutter 'FirebaseCore/FirebaseCore.h' 文件
- curl:(26)从appcenter的文件/应用程序打开/读取本地数据失败
- 剧本无法从角色内部的循环变量中找到"{{ item }}"
- 当imagflow删除缓存图像时
- 为什么concat也显示在这个选择查询中
- 将python控制台应用程序转换为web应用程序的最简单方法
- JavaFX 将折线图导出到 png 不会正确呈现图表,如果图表未置于前台
- 获取用户定义对象数组的最后一个元素
- Bash脚本导入sql转储到正确的数据库
- Pyomo MINLP解算器没有选择最优结果
- 如果对象id在其他对象id中有自己的属性,则更改数组中的对象值
- AssertionError:此优化器没有记录inf检查
- 数据导入问题
- 如何从两个不同的房间表中收集流,并将数据组合在android的recyclerview中显示
- DynamoDB全局索引vs本地索引
- 防止从iframe滚动,但仍然可以点击javascript
- 使用正则表达式将'team'标签动态添加到普罗米修斯中的警报
- 无法在nextjs 13中更新next-auth v4的会话
- R rlang: call_args in dplyr::mutate
- 如何在Azure容器应用程序上部署React Python应用程序时解决此错误?
- 如何在不泄露源代码的情况下销售chrome扩展
- wp.blocks.blockRegisterType在控制台显示错误- Gutenberg Wordpress.<
- 物质化在shadowroot内的Modal内初始化自动完成不工作
- 如何使用micronaut实现基于模式的多租户
- 授权非admin用户在Google Apps Script中运行admin SDK
- 需要退出函数,但没有得到一个不允许的值错误
- 合并两个调用并使用typeahead ngx-bootstrap显示结果?
- 如何发送文本和二进制套接字在单一消息在C?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium