[英]regexp_substr: find the text before a given patern
我想在給定模式之前找到文本。 我的主要問題是我的文本有很多行。
這里的例子:
SQL> with foo as
2 (select '1 first test error log blabla ' k from dual
3 union
4 select '2 second test
5 zz error log blablabla ' k from dual
6 )
7 SELECT REGEXP_SUBSTR(k,'.*error log',1,1) AS result_
8 ,k from foo;
RESULT_ K
------------------------------------- -------------------------------------
1 first test error log 1 first test error log blabla
zz error log 2 second test
zz error log blablabla
第二行的結果為false。 它應該是:
RESULT_ K
------------------------------------- -------------------------------------
1 first test error log 1 first test error log blabla
2 second test 2 second test
zz error log zz error log blablabla
我在11.2 Oracle數據庫上運行此查詢
從Oracle文檔中 , REGEXP_SUBSTR
的第五個參數是:
match_parameter
是文本文字,可讓您更改函數的默認匹配行為。
可以選擇 :
'n'
允許句點(.
)(它是任何字符的匹配字符)與換行符匹配。 如果省略此參數,則句點與換行符不匹配。
Oracle 11g R2架構設置 :
CREATE TABLE table_name ( k ) AS
SELECT '1 first test error log blabla ' FROM DUAL UNION ALL
SELECT '2 second test
zz error log blablabla ' FROM DUAL;
查詢1 :
SELECT REGEXP_SUBSTR(k,'.*error log',1,1,'n') AS result_,
k
FROM table_name
結果 :
| RESULT_ | K |
|------------------------|--------------------------------|
| 1 first test error log | 1 first test error log blabla |
| 2 second test | 2 second test |
| zz error log | zz error log blablabla |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.