SUBSTR
在 Oracle 中,SUBSTR 函数用于从字符串中提取子字符串。它的语法和用法相对简单,但功能强大。
语法
SUBSTR(string, start_position, [length])
参数
string:源字符串,从中提取子字符串。start_position:开始提取的位置。位置从 1 开始计数。如果为负数,则从字符串末尾向前计数。length(可选):提取的子字符串长度。如果不指定,则从start_position开始提取到字符串末尾。
示例
示例 1:基本用法
假设有一个字符串 'Hello, World!',我们从第 7 个字符开始提取:
SELECT SUBSTR('Hello, World!', 7) AS result FROM dual;
输出:
RESULT
-------
World!
示例 2:指定长度
从第 7 个字符开始,提取 5 个字符:
SELECT SUBSTR('Hello, World!', 7, 5) AS result FROM dual;
输出:
RESULT
-------
World
示例 3:从字符串末尾开始提取
从字符串末尾向前第 6 个字符开始提取:
SELECT SUBSTR('Hello, World!', -6, 5) AS result FROM dual;
输出:
RESULT
-------
World
示例 4:提取单个字符
从第 1 个字符开始,提取 1 个字符:
SELECT SUBSTR('Hello, World!', 1, 1) AS result FROM dual;
输出:
RESULT
-------
H
注意事项
start_position从 1 开始计数,而不是从 0 开始。- 如果
start_position为负数,从字符串末尾向前计数。 - 如果
length超过了字符串的剩余长度,SUBSTR函数会返回从start_position开始到字符串末尾的所有字符。
与 MySQL 的 SUBSTRING 函数对比
在 MySQL 中,SUBSTRING 函数的功能与 Oracle 的 SUBSTR 函数类似,但语法稍有不同:
MySQL 语法
SUBSTRING(str, pos, [length])
示例
SELECT SUBSTRING('Hello, World!', 7) AS result;
输出:
result
-------
World!
SELECT SUBSTRING('Hello, World!', 7, 5) AS result;
输出:
result
-------
World