Oracle 中的 SUBSTR 函数详解
本文首次创作于 2025-04-06,最后更新于 2025-05-23,距离上次更新已经过了 13 天,文章内容可能已经过时。
Oracle 中的 SUBSTR 函数详解
SUBSTR 是 Oracle 数据库中用于截取字符串的函数,它可以从指定位置开始提取字符串的一部分。
基本语法
SUBSTR(string, start_position [, length])
参数说明
string: 要截取的源字符串
start_position: 开始截取的位置(正整数表示从左向右,负整数表示从右向左)
length (可选): 要截取的子字符串长度。如果省略,则从 start_position 开始截取到字符串末尾
使用示例
1. 基本用法
SELECT SUBSTR('Oracle Database', 8, 4) FROM dual;
-- 结果: 'Data'
2. 省略 length 参数
SELECT SUBSTR('Oracle Database', 8) FROM dual;
-- 结果: 'Database'
3. 使用负的 start_position
SELECT SUBSTR('Oracle Database', -8, 4) FROM dual;
-- 结果: 'Data' (从右向左数第8个字符开始)
4. 结合表列使用
SELECT employee_name, SUBSTR(employee_name, 1, 3) AS initials
FROM employees;
5. 处理边界情况
-- 当 start_position 超出字符串长度时返回空字符串
SELECT SUBSTR('Oracle', 10, 2) FROM dual;
-- 结果: ''
-- 当 length 超出剩余字符串长度时返回剩余部分
SELECT SUBSTR('Oracle', 3, 10) FROM dual;
-- 结果: 'acle'
特殊注意事项
Oracle 中字符串位置从 1 开始计数,不是从 0 开始
如果 start_position 为 0,Oracle 会将其视为 1
对于 CLOB 类型数据,可以使用 DBMS_LOB.SUBSTR 函数
与 SUBSTRB 的区别
Oracle 还提供了 SUBSTRB 函数,它按字节而不是字符进行截取,在处理多字节字符集时会有不同表现:
SELECT SUBSTR('甲骨文', 2, 1) FROM dual; -- 结果: '骨' (字符)
SELECT SUBSTRB('甲骨文', 2, 1) FROM dual; -- 结果可能不完整 (字节)
SUBSTR 函数在数据清洗、报表生成和字符串处理中非常实用,是 Oracle SQL 中最常用的字符串函数之一。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Noah
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果