Oracle 中的 TRIM、LTRIM 和 RTRIM 函数详解详解
本文首次创作于 2025-04-08,最后更新于 2025-05-23,距离上次更新已经过了 13 天,文章内容可能已经过时。
Oracle 中的 TRIM、LTRIM 和 RTRIM 函数详解详解
TRIM 函数是 Oracle 数据库中用于去除字符串首尾指定字符的函数,它可以灵活地去除字符串开头或结尾(或两端)的特定字符。
LTRIM 函数是专门用于去除字符串开头的空格或指定字符集
RTRIM 函数是专门用于去除字符串结尾的空格或指定字符集
基本语法
TRIM([LEADING|TRAILING|BOTH] [trim_character] FROM] source_string)
LTRIM(source_string [, trim_character])
RTRIM(source_string [, trim_character])
参数说明
使用示例
1. 基本用法(去除两端空格)
SELECT TRIM(' Oracle Database ') FROM dual;
-- 结果: 'Oracle Database'
2. 去除特定字符
SELECT TRIM('0' FROM '0001234500') FROM dual;
-- 结果: '12345' (去除两端的0)
3. 指定去除位置
-- 只去除开头字符
SELECT TRIM(LEADING 'x' FROM 'xxxHello Worldxxx') FROM dual;
-- 结果: 'Hello Worldxxx'
-- 只去除结尾字符
SELECT TRIM(TRAILING 'x' FROM 'xxxHello Worldxxx') FROM dual;
-- 结果: 'xxxHello World'
4. 结合表列使用
SELECT TRIM(both ' ' FROM customer_name) AS clean_name
FROM customers;
5. 去除多个不同字符
-- 需要嵌套使用
SELECT TRIM('*' FROM TRIM('#' FROM '#*Test*#')) FROM dual;
-- 结果: 'Test'
特殊注意事项
默认行为:如果不指定任何修饰词,TRIM 默认是 BOTH 且去除空格
NULL 处理:如果 source_string 为 NULL,结果返回 NULL
多字符处理:TRIM 只能去除单个字符,不能直接去除多个不同字符
中间字符:不会去除字符串中间的字符,只处理开头和结尾
相关函数
LTRIM 和 RTRIM(功能子集)
SELECT LTRIM(' left') FROM dual; -- 结果: 'left'
SELECT RTRIM('right ') FROM dual; -- 结果: 'right'
正则表达式替换(更复杂场景)
SELECT REGEXP_REPLACE('xxyyTestyyxx', '^[xy]+|[xy]+$', '')
FROM dual;
-- 结果: 'Test'
实际应用场景
数据清洗:
UPDATE products SET product_code = TRIM(product_code);
用户输入处理:
SELECT TRIM(both FROM user_input) AS clean_input FROM user_data;
处理固定格式数据:
SELECT TRIM('"' FROM json_value) AS unquoted_value FROM json_data;
去除特定符号:
SELECT TRIM(TRAILING ',' FROM csv_line) FROM imported_data;
与其它字符串函数组合:
SELECT TRIM(both FROM SUBSTR(raw_data, 5, 10)) FROM data_table;
TRIM 函数在数据清洗和预处理中非常实用,特别是处理来自外部系统的数据时,经常需要去除多余的空格或特定分隔符。
三者的对比
使用建议
当只需要去除空格时:三者都可以,根据位置需求选择
TRIM(' text ') -- 两端 LTRIM(' text') -- 仅左 RTRIM('text ') -- 仅右
当需要去除特定字符时:
如果是单个字符且需要精确控制位置:用 TRIM
TRIM(LEADING '0' FROM '000123')
如果是多个字符:用 LTRIM/RTRIM
LTRIM('xxyyz123', 'xyz')
复杂场景组合使用:
SELECT TRIM(BOTH FROM LTRIM(RTRIM(raw_data, ';,'), '0x')) FROM data_table;
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Noah
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果