繁体   English   中英

如何在oracle sql查询中提取括号之间有几行的字符串

[英]How to extract a string with several lines between brackets in oracle sql query

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

这里( 如何在oracle sql查询中提取括号之间的字符串),解释了如何做。

但在我的情况下,字符串有 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 但我需要保留断线符号

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

\(([^)]*)\

这使用了自定义字符类[^)] ,这意味着:除了右括号之外的所有内容。 这样,您就不必担心换行符(显然,换行符不是右括号)或任何其他特殊字符:

DB Fiddle 上的演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM