第135章 SQL函数 SUBSTR
返回从指定字符串表达式派生的子字符串的字符串函数。
大纲
SUBSTR(string-expression,start[,length])
参数
string-expression - 要从中派生子字符串的字符串表达式。表达式可以是列名、字符串文字或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(例如 CHAR 或 VARCHAR )。start - 一个整数,它指定子字符串在字符串表达式中的开始位置。正的起始位置指定从字符串开头开始的字符数。 string-expression1 中的第一个字符位于位置 1 。负起始位置指定从字符串末尾算起的字符数。如果 start 为 0 (零),则将其视为 1 。length - 可选 — 一个正整数,指定要返回的子字符串的长度。此值指定子字符串在起始位置右侧结束长度字符。如果省略,则子字符串从字符串表达式的开头到结尾。如果长度为 0 或负数, 返回 NULL 。
描述
因为 start 可以是负数,所以可以从原始字符串的开头或结尾获取子字符串。
作为参数传递给 SUBSTR 的浮点数通过截断小数部分转换为整数。
- 如果
start 为 0 、–0 或 1 ,则返回的子字符串从字符串的第一个字符开始。 - 如果
start 是负数,则返回的子字符串从字符串末尾开始该数量的字符,-1 表示字符串的最后一个字符。如果负数太大以至于从字符串末尾向后计数的值将位于字符串开头之前,则返回的子字符串从字符串的第一个字符开始。 - 如果
start 超过了字符串的结尾,则返回 NULL 。 - 如果长度大于字符串中剩余的字符,则返回从字符串开头到结尾的子字符串。
- 如果长度小于
1 ,则返回 NULL 。 - 如果
start 或 length 为 NULL ,则返回 NULL 。
SUBSTR 不能与流数据一起使用。如果 string-expression 是流字段,则 SUBSTR 生成 SQLCODE -37 。使用 SUBSTRING 从流数据中提取子字符串。
Oracle 兼容性支持 SUBSTR 。
示例
以下示例返回子字符串 CDEFG ,因为它指定子字符串从第三个字符 (C ) 开始并继续到字符串的末尾:
SELECT SUBSTR('ABCDEFG',3) AS Sub
CDEFG
以下示例返回子字符串 CDEF ,因为它指定子字符串从第三个字符 (C ) 开始并持续四个字符(直到 F ):
SELECT SUBSTR('ABCDEFG',3,4) AS Sub
CDEF
以下示例返回子字符串 CDEF ,因为它指定 应首先从原始字符串的末尾倒数五个字符,然后返回接下来的四个字符:
SELECT SUBSTR('ABCDEFG',-5,4) AS Sub
CDEF
|