语法图

SUBSTRING_INDEX函数提取expr表示的字符串中在分隔符指定次数出现之前的子字符串。
expr
expr的值须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。
delim
表示分隔符,用于分割expr。delim为与expr相同的通用表达式,须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。
(0,1)之间的小数,转换后的delim将去除小数点前的0进行匹配。count
表示分隔符出现的次数,用于定位分割的终止位置。count为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。
示例
SELECT SUBSTRING_INDEX('192.168.0.1',0.1, 1) a
,SUBSTRING_INDEX('192.168.0.1','.', 2) b
,SUBSTRING_INDEX('192.168.0.1','.', 3) c
,SUBSTRING_INDEX('192.168.0.1','.', 4) d
FROM DUAL;
A B C D
----- --------- ------------- -------------
192 192.168 192.168.0 192.168.0.1
SELECT SUBSTRING_INDEX('192.168.0.1','.',-1) a
,SUBSTRING_INDEX('192.168.0.1','.',-2) b
,SUBSTRING_INDEX('192.168.0.1','.',-3) c
,SUBSTRING_INDEX('192.168.0.1','.',-4) d
FROM DUAL;
A B C D
----- ----- --------- -------------
1 0.1 168.0.1 192.168.0.1
SELECT SUBSTRING_INDEX('192.168.0.1','.',CAST(1.5 AS NUMBER)) a
,SUBSTRING_INDEX('192.168.0.1','.',CAST(2.5 AS NUMBER)) b
,SUBSTRING_INDEX('192.168.0.1','.',CAST(1.5 AS FLOAT)) c
,SUBSTRING_INDEX('192.168.0.1','.',CAST(2.5 AS FLOAT)) d
,SUBSTRING_INDEX('192.168.0.1','.',CAST(1.5 AS DOUBLE)) e
,SUBSTRING_INDEX('192.168.0.1','.',CAST(2.5 AS DOUBLE)) f
FROM DUAL;
A B C D E F
--------- ------------- --------- --------- --------- ---------
192.168 192.168.0 192.168 192.168 192.168 192.168
SELECT SUBSTRING_INDEX(NULL,'.',1) a
,SUBSTRING_INDEX('192.168.0.1',NULL,1) b
,SUBSTRING_INDEX('192.168.0.1','.',NULL) c
,SUBSTRING_INDEX('192.168.0.1','.',0) d
FROM DUAL;
A B C D
----- ----- ----- ----- 代码
substring_index::= SUBSTRING_INDEX "(" expr "," delim "," count ")"SUBSTRING_INDEX函数提取expr表示的字符串中在分隔符指定次数出现之前的子字符串。
expr
expr的值须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。
delim
表示分隔符,用于分割expr。delim为与expr相同的通用表达式,须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。
(0,1)之间的小数,转换后的delim将去除小数点前的0进行匹配。count
表示分隔符出现的次数,用于定位分割的终止位置。count为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。
示例
SELECT SUBSTRING_INDEX('192.168.0.1',0.1, 1) a
,SUBSTRING_INDEX('192.168.0.1','.', 2) b
,SUBSTRING_INDEX('192.168.0.1','.', 3) c
,SUBSTRING_INDEX('192.168.0.1','.', 4) d
FROM DUAL;
A B C D
----- --------- ------------- -------------
192 192.168 192.168.0 192.168.0.1
SELECT SUBSTRING_INDEX('192.168.0.1','.',-1) a
,SUBSTRING_INDEX('192.168.0.1','.',-2) b
,SUBSTRING_INDEX('192.168.0.1','.',-3) c
,SUBSTRING_INDEX('192.168.0.1','.',-4) d
FROM DUAL;
A B C D
----- ----- --------- -------------
1 0.1 168.0.1 192.168.0.1
SELECT SUBSTRING_INDEX('192.168.0.1','.',CAST(1.5 AS NUMBER)) a
,SUBSTRING_INDEX('192.168.0.1','.',CAST(2.5 AS NUMBER)) b
,SUBSTRING_INDEX('192.168.0.1','.',CAST(1.5 AS FLOAT)) c
,SUBSTRING_INDEX('192.168.0.1','.',CAST(2.5 AS FLOAT)) d
,SUBSTRING_INDEX('192.168.0.1','.',CAST(1.5 AS DOUBLE)) e
,SUBSTRING_INDEX('192.168.0.1','.',CAST(2.5 AS DOUBLE)) f
FROM DUAL;
A B C D E F
--------- ------------- --------- --------- --------- ---------
192.168 192.168.0 192.168 192.168 192.168 192.168
SELECT SUBSTRING_INDEX(NULL,'.',1) a
,SUBSTRING_INDEX('192.168.0.1',NULL,1) b
,SUBSTRING_INDEX('192.168.0.1','.',NULL) c
,SUBSTRING_INDEX('192.168.0.1','.',0) d
FROM DUAL;
A B C D
----- ----- ----- ----- 本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。