2017-08-27 58 views
1

我试图将数据从一个blob导出报表中使用一滴之间返回的字符串,但我想从中读取数据时使用REGEXP_SUBSTR遇到麻烦。将其转换为varchar帮助,但得到的数据点我需要的是挺难的,因为我发现!的Oracle SQL:从两个字符串(可能使用REGEXP_SUBSTR)

这里是我如何让为varchar:

select utl_raw.cast_to_varchar2(dbms_lob.substr(NOTE)) FROM prod17import; 

这是输出为varchar样本:

"Import: T5, ModId: #24, Time: 1/11/2017 7:32:30 AM 
Records read: 1723 
Added: 1723, Changed: 0 
Rejected: 0, Skipped: 0 
0.01 Minutes. 234422 recs/min 
Map=IMCOWITHHOLDINGLAYOUTTEST9A.MPWM 
Source=W:\(filename).TXT, created: 1/10/2017 11:15:44 PM 

Reject name: REJECT 
Resource name: !6Imports.Liability.Maps.Life Import Resource 
" 

我试图收集只值234422(其我如何获得这个词之间的值1-1,000,000之间可能有所不同)

“纪要”。和“recs/min”?

+0

为什么BLOB和CLOB不? BLOB是用于二进制文件,而不是用于文本。你不应该期望它很容易从BLOB中提取文本。 – mathguy

回答

0

如果字符串格式保持一致,使用

select regexp_substr(utl_raw.cast_to_varchar2(dbms_lob.substr(NOTE)) 
        ,'minutes. ([0-9]+) recs/min',1,1,'i',1) 
from prod17import 

i作为参数指定区分大小写的匹配。如果您需要匹配区分大小写,请使用null