#SUBSTRING_INDEX

substring_index
SUBSTRING_INDEX ( expr , delim , count )

SUBSTRING_INDEX函数提取expr表示的字符串中在分隔符指定次数出现之前的子字符串。

expr的值须为字符型,或可转换为字符型的其他类型(不包括LOB类型)。当expr的值为NULL时,函数返回NULL。

本函数返回值类型为VARCHAR。

delim

表示分隔符,用于分割expr。delim的值须为字符型,或可转换为字符型的其他类型(不包括LOB类型)。若使用非字符型的形式输入(0,1)之间的小数,转换后的delim将去除小数点前的0进行匹配。

delim为与expr相同的通用表达式,当delim的值为NULL时,函数返回NULL。

当delim在expr中未匹配到时,函数将返回expr全部内容。

count

表示分隔符出现的次数,用于定位分割的终止位置。count值须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,当其值为带有小数的NUMBER类型时,函数将其四舍五入至整数;当其值为浮点类型时,函数将其奇进偶舍至整数。

count为与expr相同的通用表达式,当count的值为NULL或0时,函数返回NULL。

当count为正数,则返回分隔符第count次出现时左侧的所有内容(从左侧开始计数)。

当count为负数,则返回分隔符第count次出现时右侧的所有内容(从右侧开始计数)。

当count的值超出delim在expr中的出现次数时,函数将返回expr全部内容。

示例

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     
----- ----- ----- ----- 

pdf-btn 下载文档
copy-btn 复制链接