【问题标题】:Confusion in REGEXP_SUBSTR In oracleoracle中的REGEXP_SUBSTR混淆
【发布时间】:2020-02-16 02:36:21
【问题描述】:

我在 oracle 中学习 REGEXP_SUBSTR。

我试过了:

select REGEXP_SUBSTR('500 NANDA,KARKI,KUMAR','[^,]+',1,3) from dual;

output is : KUMAR

凡是我理解的,我都会解释,如有错误请指正。 [^,] -> 这个逗号部分将从第一部分开始搜索,并将到达500 NANDA, 部分。 看到,之后,它会尝试从这部分提取

KARKI,KUMAR

就像substr(string,1,4) 一样,1 是第一个字符的位置,4 是它的长度,但我期望上面的输出是

KAR

但是我得到了KUMAR的输出。它是怎么来的?

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    来自您的代码 -

    select REGEXP_SUBSTR(
                         '500 NANDA,KARKI,KUMAR'  --string
                        ,'[^,]+'                  -- Pattern (Inside Bracket) to fetch sub-string and + sign denotes anything after the comma
                        ,1                        -- start_position of string to start searching the pattern
                        ,3                        -- Occurrence of the pattern.
                        ) from dual;
    

    所以 3 指定在第二个逗号(模式)之后获取字符串的第三部分。

    REGEXP_SUBSTR.

    【讨论】:

    • 这里的+号有什么用?
    • 你好兄弟,只有两个逗号,这 3(- 模式的出现。)如何为我提供输出 KUMAR?
    • 你为什么使用插入符号?我发现如果在大括号内使用插入符号,那么它将与 insdie big barcket 给出的模式不匹配。但是这里它是如何匹配的?
    • 我说的是插入符号。如果在括号内使用插入符号,那么它将忽略大括号的内容是吗?例如: [^A-X] 然后我看到输出 Y OR Z
    • 没错,所以 [^,] 会告诉我们获取除逗号以外的所有内容。
    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 2013-09-05
    • 2012-02-11
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多