【问题标题】:How to extract a string with several lines between brackets in oracle sql query如何在oracle sql查询中提取括号之间有几行的字符串
【发布时间】:2019-12-14 08:42:08
【问题描述】:

我正在尝试从字符串中提取括号之间的值。

这里(How to extract a string between brackets in oracle sql query),说明怎么做。

但在我的情况下,字符串有 2 行。通过这种方式,我只得到 NULL。

SELECT REGEXP_SUBSTR('Gupta, Abha (01792)', '\((.+)\)', 1, 1, NULL, 1) FROM dual --01792

SELECT REGEXP_SUBSTR('Gupta, Abha (01
                 792)', '\((.+)\)', 1, 1, NULL, 1) FROM dual -- NULL

我知道我可以删除断线符号然后使用 regex_substr 但我需要保留断线符号

【问题讨论】:

标签: sql regex oracle


【解决方案1】:

我会用以下正则表达式来解决这个问题:

\(([^)]*)\

这使用了一个自定义字符类[^)],这意味着:除了一个右括号。这样,您就不必担心换行符(因为很明显,换行符不是右括号)或任何其他特殊字符:

Demo on DB Fiddle

SELECT REGEXP_SUBSTR('Gupta, Abha (01
                 792)', '\(([^)]*)\)') res FROM dual
|资源 | | :-------------------- | | (01 | |第792章)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 2017-02-26
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 2020-01-26
    • 2017-11-10
    相关资源
    最近更新 更多