Oracle SUBSTR() 函数使用指南

Oracle SUBSTR() 是一个内置函数,它返回从一个字符串中返回一个从指定位置开始的指定长度的子字符串。

Oracle 有几个与之类似的函数,只是它们计算长度的方式不同:

  • SUBSTR 使用输入字符集定义的字符计算长度。
  • SUBSTRB 使用字节而不是字符计算长度。
  • SUBSTRC 使用 Unicode 完整字符计算长度。
  • SUBSTR2 使用 UCS2 代码点计算长度。
  • SUBSTR4 使用 UCS4 代码点计算长度。

如果您需要使用从源字符串中匹配子字符串,请使用 REGEXP_SUBSTR()

Oracle SUBSTR() 语法

这里是 Oracle SUBSTR() 函数的语法:

SUBSTR(char, position [, substring_length ])

参数

char

必需的。从中提取子字符串的原字符串。它是 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, 或 NCLOB 中的任何数据类型。

position

必需的。开始提取的位置。它可以是正数或者负数。如果是正数,则从字符串的开头为起始位置确定开始提取的位置提取子字符串。如果是负数,则从字符串的结尾为起始位置确定开始提取的位置提取子字符串。

substring_length

可选的。子字符串的长度(字符数)。如果不指定,则提取到原字符串的结尾。

返回值

Oracle SUBSTR() 函数从一个字符串中返回一个从指定位置开始的指定长度的子字符串。

  • 如果 position0,则将其视为 1
  • 如果 position 为正数,则 Oracle 从 char 的开头计数以找到第一个字符。
  • 如果 position 为负数,则 Oracle 从 char 的末尾开始倒数。
  • 如果 substring_length 省略,则 Oracle 返回到 char 结尾的所有字符。 如果 substring_length 小于 1,则 Oracle 返回 NULL

Oracle SUBSTR() 示例

这里有几个展示了 Oracle SUBSTR() 函数用法的示例。

基本用法

SELECT
    SUBSTR('Hello World', 7) Result
FROM dual;

输出:

RESULT
_________
World

子字符串长度

Oracle SUBSTR() 允许您指定字符串的长度。

SELECT
    SUBSTR('Hello World', 8, 2) Result
FROM dual;

输出:

RESULT
_________
or

负数位置

Oracle SUBSTR() 允许您指定一个负数的位置参数。为位置指定负值会导致起始位置从字符串末尾向后计数:

SELECT
    SUBSTR('Hello World', -5) Result
FROM dual;

输出:

RESULT
_________
World

NULL 参数

如果任意一个参数为 NULLSUBSTR() 将返回 NULL

SET NULL 'NULL';
SELECT
    SUBSTR(NULL, 3) Result1,
    SUBSTR('A', NULL) Result2,
    SUBSTR('A', 1, NULL) Result3,
    SUBSTR(NULL, NULL, NULL) Result4
FROM dual;

输出:

RESULT1    RESULT2    RESULT3    RESULT4
__________ __________ __________ __________
NULL       NULL       NULL       NULL

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle SUBSTR() 是一个内置函数,它返回从一个字符串中返回一个从指定位置开始的指定长度的子字符串。