如何使用Oracle SQL从一个列值中查找多个字符串
下面是我的一个表中的CLOB列值。此值包含许多图像路径如何使用Oracle SQL从一个列值中查找多个字符串,sql,oracle,regexp-substr,Sql,Oracle,Regexp Substr,下面是我的一个表中的CLOB列值。此值包含许多图像路径 <p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy2.jpg" style="height:67px; width:50px" /></p> <p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy%201.jpg" style="height:133px; width:
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy2.jpg" style="height:67px; width:50px" /></p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy%201.jpg" style="height:133px; width:100px" />Please test this document</p>
<p> </p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Kenny.jpg" style="height:250px; width:200px" /></p>
<p> </p>
我的查询的输出是:
/library/NATIONWIDE/CCS_SUPPORT/Emmy2.jpg" style
你能指导我,如何获得所有的图像路径吗
多谢各位
kishore KunaOracle REGEXP_SUBSTR返回字符串中的第一个匹配项。可以使用CONNECT BY子句递归分析字符串:
SELECT REGEXP_SUBSTR(x.xml, '/library/NATIONWIDE/.* style', 1, LEVEL) AS xml_substr
FROM (
SELECT xml
FROM contenttext
WHERE
contenttext.xml like '%img alt=%'
AND contenttext.documentid like 'SPT91%'
AND contenttext.published = 'Y'
) x
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(x.xml, '/library/NATIONWIDE/.* style')) + 1;
此SQL不需要任何连接方式。通过使用“m”选项,regexp\u replace将每一行视为单独的字符串。我提供了两个参数,用竖条上的“或”分隔。第一个字符串是所需的字符串,第二个字符串是其他所有字符串 仅保留所需字符串“\1”,但额外的回车符仍然存在,因此周围的regexp\u replace将删除多个回车符
-- Just setting up a test dataset
WITH aset AS( SELECT '<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy2.jpg"
style="height:67px; width:50px" /></p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy%201.jpg"
style="height:133px; width:100px" />Please test this document</p>
<p>nbsp;</p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Kenny.jpg" style="height:250px;
width:200px" /></p>
<p>nbsp;</p>' test FROM DUAL )
-- Magic starts here
SELECT test
, regexp_replace( REGEXP_REPLACE( test
, '(^.*/library/NATIONWIDE/.*$)|(.*$)'
, '\1'
, 1
, 0
, 'im' )
, CHR( 10 ) || '+'
, CHR( 10 ) ) one
FROM aset
结果如下:
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy2.jpg" style="height:67px; width:50px" /></p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy%201.jpg" style="height:133px; width:100px" />Please test this document</p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Kenny.jpg" style="height:250px; width:200px" /></p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy2.jpg" style="height:67px; width:50px" /></p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Emmy%201.jpg" style="height:133px; width:100px" />Please test this document</p>
<p><img alt="" src="/library/NATIONWIDE/CCS_SUPPORT/Kenny.jpg" style="height:250px; width:200px" /></p>