求解释下面sql语句REGEXP的用法,我知道后面第一个字符串是啥。后面[^,]+是啥意思,还有最后的i是啥意思
--1、查询使用正则分割后的第一个值,也就是34SELECTREGEXP_SUBSTR('34,56,-23','[^,]+',1,1,'i')ASSTRFROMDUAL...
--1、查询使用正则分割后的第一个值,也就是34
SELECT REGEXP_SUBSTR('34,56,-23','[^,]+',1,1,'i') AS STR FROM DUAL;
--结果是:34
--2、查询使用正则分割后的最后一个值,也就是-23
SELECT REGEXP_SUBSTR('34,56,-23','[^,]+',1,3,'i') AS STR FROM DUAL;
--结果是:-23 展开
SELECT REGEXP_SUBSTR('34,56,-23','[^,]+',1,1,'i') AS STR FROM DUAL;
--结果是:34
--2、查询使用正则分割后的最后一个值,也就是-23
SELECT REGEXP_SUBSTR('34,56,-23','[^,]+',1,3,'i') AS STR FROM DUAL;
--结果是:-23 展开
展开全部
这个问题涉及到REGEXP_SUBSTR函数的参数
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
[^,]+就是你的正则表达式,意思是字符串'34,56,-23'中从字符起始位置开始到逗号结束的任意个字符。查询结果有3个匹配组,REGEXP_SUBSTR的第四个参数来区需要第几个匹配组。
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
[^,]+就是你的正则表达式,意思是字符串'34,56,-23'中从字符起始位置开始到逗号结束的任意个字符。查询结果有3个匹配组,REGEXP_SUBSTR的第四个参数来区需要第几个匹配组。
追问
[^,]应该是34,+应该是啥,还有i是啥意思。
追答
+的意思是匹配多个,意思就是说[^,]+匹配的结果应该是3个34 56 -23 都符合条件,只是用occurrence参数,表示取第几个匹配结果。
modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
i的意思是不分大小写进行匹配,这是数字字符串没什么用处,如果是字母字符串就有用了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询