最近在学习SQL/PL SQL编程
在练习中遇到一个函数TRIM 实在搞不明白是什么原因,知道的朋友麻烦解释一下,问题如下:
SELECT TRIM(BOTH 'A' FROM 'ASLDJFA') FROM DUAL; --不会报错
SELECT TRIM(BOTH 'AB' FROM 'ABKWENNSDAB') FROM DUAL; --报ORA-30001: 截取集仅能有一个字符
想问问这个trim 截去字符是不是只能截去一个字符呀? 我在书上看见的能够截去字符串,不明白到底是哪里错了
[quote]这里的“trim_character”参数只允许包含一个字符,不支持多字符。
报错信息如下:
gloria@www.dweye.net> select trim (leading 'xy' from 'xyxxDWEYExyyx') "TRIM e.g." from dual;
select trim (leading 'xy' from 'xyxxDWEYExyyx') "TRIM e.g." from dual
*
ERROR at line 1:
ORA-30001: trim set should have only one character
既然TRIM不能满足我们删除只剩“DWEYE”字符串的要求,有么有其他手段呢?of course有。我们使用RTRIM和LTRIM“连环拳”完成这个任务。
1)使用RTRIM
gloria@www.dweye.net> select rtrim('xyxxDWEYExyyx','xy') "e.g." from dual;
xyxxDWEYE
2)使用LTRIM
gloria@www.dweye.net> select ltrim('xyxxDWEYExyyx','xy') "e.g." from dual;
DWEYExyyx
3)联合使用RTRIM和LTRIM函数达到我们的目的
gloria@www.dweye.net> select ltrim(rtrim('xyxxDWEYExyyx','xy'),'xy') "e.g." from dual;
DWEYE
使用RTRIM和LTRIM函数时的注意事项:“xy”不表示整个“xy”字符串进行匹配,而是发现任意的字符“x”或字符“y”均做删除操作。
[/quote]