oracle中REGEXP_SUBSTR的混淆
我正在oracle学习REGEXP_SUBSTR 我试过:oracle中REGEXP_SUBSTR的混淆,oracle,oracle11g,Oracle,Oracle11g,我正在oracle学习REGEXP_SUBSTR 我试过: select REGEXP_SUBSTR('500 NANDA,KARKI,KUMAR','[^,]+',1,3) from dual; output is : KUMAR 无论我理解什么,我都会解释,如果我犯了错误,请改正。 [^,]->此逗号部分将从第一部分开始搜索,并将到达500 NANDA,part。 在它看到这个,之后,它将尝试从这个部分提取 KARKI,KUMAR 就像在substr(string,1,4)中一样,1是
select REGEXP_SUBSTR('500 NANDA,KARKI,KUMAR','[^,]+',1,3) from dual;
output is : KUMAR
无论我理解什么,我都会解释,如果我犯了错误,请改正。
[^,]->此逗号部分将从第一部分开始搜索,并将到达500 NANDA,
part。
在它看到这个,
之后,它将尝试从这个部分提取
KARKI,KUMAR
就像在substr(string,1,4)
中一样,1是第一个字符的位置,4是它的长度编号,但我期望上面的输出是
KAR
但是我得到的输出是KUMAR
。它是怎么来的 来自您的代码-
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指定在第二个逗号(模式)之后获取字符串的第三部分
来自您的代码-
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指定在第二个逗号(模式)之后获取字符串的第三部分
这里+符号的用途是什么?你好,兄弟,只有两个逗号,这3(-出现模式)是如何给我输出KUMAR的?你为什么使用插入符号?我发现,如果在大括号内使用插入符号,那么它将与大括号中给出的模式不匹配。但在这里它是如何匹配的?我说的是插入符号。如果括号内使用插入符号,则会忽略大括号的内容是吗?例如:[^A-X]然后我看到输出Y或ZExactly,所以[^,]会告诉我获取除逗号以外的所有内容。这里的+符号有什么用?喂,兄弟,只有两个逗号,这3(-模式的出现)如何给我输出KUMAR?为什么使用插入符号?我发现,如果在大括号内使用插入符号,那么它将与大括号中给出的模式不匹配。但在这里它是如何匹配的?我说的是插入符号。如果括号内使用插入符号,则会忽略大括号的内容是吗?例如:[^A-X]然后我看到输出Y或ZExactly,因此[^,]将告诉我获取除逗号以外的所有内容。