ITPub博客

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

YashanDB SUBSTRING函数

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

SUBSTRING

语法图

SUBSTRING函数提取 expr表示的字符串中指定位置指定长度的子字符串。

expr

expr的值须为字符型,或可转换为字符型的其他类型。

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

  • 当expr的值为CLOB类型时,返回值为CLOB类型;当expr的值为NCLOB类型时,返回值为NCLOB类型;当expr值为NCHAR、NVARCHAR类型时,返回值为NVARCHAR类型;当expr值为其他类型时,返回值为VARCHAR类型。

  • 对于列存表中的LOB类型字段,若某行数据为行外存储,则无法使用本函数。

  • expr不能为XMLTYPE类型。

pos

表示从pos值指定位置开始提取字符串,pos为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。

  • 当pos的值为带有小数的NUMBER类型(或转换后为NUMBER类型)时,函数四舍五入进行取整。

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

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

  • 当pos的值为正数时,表示从字符串的头部开始确定起始位置;当pos值为负数时,表示从字符串的尾部开始确定起始位置。

  • 当pos的值等于0或其绝对值超过字符串的长度时,函数返回NULL。

len

表示提取len值指定长度的字符串,len为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。

  • 当len的值为带有小数的NUMBER类型(或转换后为NUMBER类型)时,函数四舍五入进行取整。

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

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

  • 当不指定len,或len值大于从pos值指定位置开始到字符串结尾的长度时,函数返回从pos值指定位置开始到字符串结尾的子字符串。

  • 当len的值为0或负数时, 函数返回NULL。

示例

SELECT SUBSTRING('abcdefg', 3) a,SUBSTRING('abcdefg', 3, 2) b,SUBSTRING('abcdefg', -3) c,SUBSTRING('abcdefg', 3, -2) dFROM DUAL;A         B     C     D--------- ----- ----- -----cdefg     cd    efgSELECT SUBSTRING('abcdefg' FROM 3) a,SUBSTRING('abcdefg' FROM 3 FOR 2) b,SUBSTRING('abcdefg' FROM -3) c,SUBSTRING('abcdefg' FROM 3 FOR -2) dFROM DUAL;A         B     C     D--------- ----- ----- -----cdefg     cd    efgSELECT SUBSTRING('abcdefg', CAST(2.5 AS NUMBER), CAST(1.5 AS NUMBER)) a,SUBSTRING('abcdefg', '2.5', '1.5') b,SUBSTRING('abcdefg', CAST(2.5 AS FLOAT), CAST(1.5 AS FLOAT)) c,SUBSTRING('abcdefg', CAST(2.5 AS DOUBLE), CAST(1.5 AS DOUBLE)) dFROM DUAL;A         B     C         D--------- ----- --------- ---------cd        b     bc        bcSELECT SUBSTRING('abcdefg' FROM CAST(2.5 AS NUMBER) FOR CAST(1.5 AS NUMBER)) a,SUBSTRING('abcdefg' FROM '2.5' FOR '1.5') b,SUBSTRING('abcdefg' FROM CAST(2.5 AS FLOAT) FOR CAST(1.5 AS FLOAT)) c,SUBSTRING('abcdefg' FROM CAST(2.5 AS DOUBLE) FOR CAST(1.5 AS DOUBLE)) dFROM DUAL;A         B     C         D--------- ----- --------- ---------cd        b     bc        bc
代码
substring::= SUBSTRING "(" ((expr "," pos ["," len])|(expr FROM pos [FOR len])) ")"

SUBSTRING函数提取 expr表示的字符串中指定位置指定长度的子字符串。

expr

expr的值须为字符型,或可转换为字符型的其他类型。

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

  • 当expr的值为CLOB类型时,返回值为CLOB类型;当expr的值为NCLOB类型时,返回值为NCLOB类型;当expr值为NCHAR、NVARCHAR类型时,返回值为NVARCHAR类型;当expr值为其他类型时,返回值为VARCHAR类型。

  • 对于列存表中的LOB类型字段,若某行数据为行外存储,则无法使用本函数。

  • expr不能为XMLTYPE类型。

pos

表示从pos值指定位置开始提取字符串,pos为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。

  • 当pos的值为带有小数的NUMBER类型(或转换后为NUMBER类型)时,函数四舍五入进行取整。

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

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

  • 当pos的值为正数时,表示从字符串的头部开始确定起始位置;当pos值为负数时,表示从字符串的尾部开始确定起始位置。

  • 当pos的值等于0或其绝对值超过字符串的长度时,函数返回NULL。

len

表示提取len值指定长度的字符串,len为与expr相同的通用表达式,须为除BIT外数值型数据,或可转换为NUMBER的其他类型数据,取值范围[-2147483648,2147483647]。

  • 当len的值为带有小数的NUMBER类型(或转换后为NUMBER类型)时,函数四舍五入进行取整。

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

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

  • 当不指定len,或len值大于从pos值指定位置开始到字符串结尾的长度时,函数返回从pos值指定位置开始到字符串结尾的子字符串。

  • 当len的值为0或负数时, 函数返回NULL。

示例

SELECT SUBSTRING('abcdefg', 3) a,SUBSTRING('abcdefg', 3, 2) b,SUBSTRING('abcdefg', -3) c,SUBSTRING('abcdefg', 3, -2) dFROM DUAL;A         B     C     D--------- ----- ----- -----cdefg     cd    efgSELECT SUBSTRING('abcdefg' FROM 3) a,SUBSTRING('abcdefg' FROM 3 FOR 2) b,SUBSTRING('abcdefg' FROM -3) c,SUBSTRING('abcdefg' FROM 3 FOR -2) dFROM DUAL;A         B     C     D--------- ----- ----- -----cdefg     cd    efgSELECT SUBSTRING('abcdefg', CAST(2.5 AS NUMBER), CAST(1.5 AS NUMBER)) a,SUBSTRING('abcdefg', '2.5', '1.5') b,SUBSTRING('abcdefg', CAST(2.5 AS FLOAT), CAST(1.5 AS FLOAT)) c,SUBSTRING('abcdefg', CAST(2.5 AS DOUBLE), CAST(1.5 AS DOUBLE)) dFROM DUAL;A         B     C         D--------- ----- --------- ---------cd        b     bc        bcSELECT SUBSTRING('abcdefg' FROM CAST(2.5 AS NUMBER) FOR CAST(1.5 AS NUMBER)) a,SUBSTRING('abcdefg' FROM '2.5' FOR '1.5') b,SUBSTRING('abcdefg' FROM CAST(2.5 AS FLOAT) FOR CAST(1.5 AS FLOAT)) c,SUBSTRING('abcdefg' FROM CAST(2.5 AS DOUBLE) FOR CAST(1.5 AS DOUBLE)) dFROM DUAL;A         B     C         D--------- ----- --------- ---------cd        b     bc        bc


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

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

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639752