关于Oracle 函数 trim 的一个疑惑

最近在学习SQL/PL SQL编程
在练习中遇到一个函数TRIM 实在搞不明白是什么原因,知道的朋友麻烦解释一下,问题如下:

SELECT TRIM(BOTH 'A' FROM 'ASLDJFA') FROM DUAL; --不会报错

SELECT TRIM(BOTH 'AB' FROM 'ABKWENNSDAB') FROM DUAL; --报ORA-30001: 截取集仅能有一个字符

想问问这个trim 截去字符是不是只能截去一个字符呀? 我在书上看见的能够截去字符串,不明白到底是哪里错了

1个回答

[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;

e.g.

xyxxDWEYE

2)使用LTRIM
gloria@www.dweye.net> select ltrim('xyxxDWEYExyyx','xy') "e.g." from dual;

e.g.

DWEYExyyx

3)联合使用RTRIM和LTRIM函数达到我们的目的
gloria@www.dweye.net> select ltrim(rtrim('xyxxDWEYExyyx','xy'),'xy') "e.g." from dual;

e.g.

DWEYE

使用RTRIM和LTRIM函数时的注意事项:“xy”不表示整个“xy”字符串进行匹配,而是发现任意的字符“x”或字符“y”均做删除操作。
[/quote]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐