怎样才能从出现在阻塞中的数据中检索一个列表?
堵塞的例子:
<bank>
<bankDetails>
<bankDetailsList>
<pk>1</pk>
<accountName>
<asCurrent>EDGARS LESOTHO</asCurrent>
</accountName>
<bankAccountType>
<asCurrent>CURR</asCurrent>
</bankAccountType>
</bankDetailsList>
<bankDetailsList>
<pk>2</pk>
<accountName>
<asCurrent>EDGARS LESOTHO 2</asCurrent>
</accountName>
<bankAccountType>
<asCurrent>CURR</asCurrent>
</bankAccountType>
</bankDetailsList>
</bankDetails>
</bank>因此,我想在sql中检索帐户名的所有值,前提是这个帐户名的第n个列表可能出现在一个clob中。
我正在使用甲骨文11g和SqlDeveloper 4.1.3你的反应是非常感谢的。
发布于 2016-04-28 11:17:15
SELECT EXTRACTVALUE( v.COLUMN_VALUE, '/asCurrent' )
FROM table_name t,
TABLE(
XMLSequence(
EXTRACT(
XMLType( t.clob_column ),
'/bank/bankDetails/bankDetailsList/accountName/asCurrent'
)
)
) v发布于 2016-04-28 11:45:25
SELECT level as rnk, regexp_substr(t.clob_column,
'<accountName>[^<]*?<asCurrent>([^<]*?)<', 1, level, null, 1) as acct_name
FROM t
CONNECT BY level <= (select regexp_count(clob_column, '<accountName>') FROM t);T是表名,clob_column是具有clob值的列(在我的测试用例中,表有一行和一列,值在原始post中)。
如果您有一列clob值,并且需要同时对多个值执行此操作,则需要对此做一些修改;请澄清需求,我们可以从那里提取。
添加了:,为了使它能够处理多个行,您需要修改CONNECT BY子句。您希望每一行只引用自身;为了避免循环问题,您需要再添加一个条件。如下所示:
...
CONNECT BY level <= (select regexp_count(clob_column, '<accountName>') FROM t)
and clob_column= prior clob_column
and prior sys_guid() is not null;https://stackoverflow.com/questions/36912125
复制相似问题