ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB SUBSTRING_INDEX函数

YashanDB SUBSTRING_INDEX函数

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-08-04 11:42:38 0 删除 编辑

SUBSTRING_INDEX

语法图

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

expr

expr的值须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。

  • 当expr的值为NULL时,函数返回NULL。

  • 当expr为NCHAR/NVARCHAR类型时,返回值为NVARCHAR类型,其余场景返回值为VARCHAR类型。

delim

表示分隔符,用于分割expr。delim为与expr相同的通用表达式,须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。

  • 若使用非字符型的形式输入 (0,1)之间的小数,转换后的delim将去除小数点前的0进行匹配。

  • 当delim的值为NULL时,函数返回NULL。

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

count

表示分隔符出现的次数,用于定位分割的终止位置。count为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。

  • 当count的值为带有小数的NUMBER类型时,函数将其四舍五入至整数。

  • 当count的值为浮点类型时,函数将其奇进偶舍至整数。

  • 当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) dFROM 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) dFROM 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)) fFROM 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) dFROM DUAL;A     B     C     D     
----- ----- ----- -----
代码
substring_index::= SUBSTRING_INDEX "(" expr "," delim "," count ")"

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

expr

expr的值须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。

  • 当expr的值为NULL时,函数返回NULL。

  • 当expr为NCHAR/NVARCHAR类型时,返回值为NVARCHAR类型,其余场景返回值为VARCHAR类型。

delim

表示分隔符,用于分割expr。delim为与expr相同的通用表达式,须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。

  • 若使用非字符型的形式输入 (0,1)之间的小数,转换后的delim将去除小数点前的0进行匹配。

  • 当delim的值为NULL时,函数返回NULL。

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

count

表示分隔符出现的次数,用于定位分割的终止位置。count为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。

  • 当count的值为带有小数的NUMBER类型时,函数将其四舍五入至整数。

  • 当count的值为浮点类型时,函数将其奇进偶舍至整数。

  • 当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) dFROM 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) dFROM 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)) fFROM 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) dFROM DUAL;A     B     C     D     
----- ----- ----- -----


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3092695/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: YashanDB SUM函数
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639747