簡體   English   中英

regexp_substr:在給定模式之前查找文本

[英]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'允許句點( . )(它是任何字符的匹配字符)與換行符匹配。 如果省略此參數,則句點與換行符不匹配。

SQL小提琴

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM