写点什么

YashanDB SUBSTRING 函数

作者:YashanDB

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    efg
SELECT 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 efg
SELECT 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 bc
SELECT 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    efg
SELECT 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 efg
SELECT 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 bc
SELECT 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
复制代码


用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB SUBSTRING函数_数据库 大数据_YashanDB_InfoQ写作社区