问题描述
最近在学习SQL/PL SQL编程 在练习中遇到一个函数TRIM 实在搞不明白是什么原因,知道的朋友麻烦解释一下,问题如下:SELECT TRIM(BOTH 'A' FROM 'ASLDJFA') FROM DUAL; --不会报错SELECT TRIM(BOTH 'AB' FROM 'ABKWENNSDAB') FROM DUAL; --报ORA-30001: 截取集仅能有一个字符 想问问这个trim 截去字符是不是只能截去一个字符呀? 我在书上看见的能够截去字符串,不明白到底是哪里错了
解决方案
引用这里的“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)使用RTRIMgloria@www.dweye.net> select rtrim('xyxxDWEYExyyx','xy') "e.g." from dual;e.g.------------xyxxDWEYE2)使用LTRIMgloria@www.dweye.net> select ltrim('xyxxDWEYExyyx','xy') "e.g." from dual;e.g.------------DWEYExyyx3)联合使用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”均做删除操作。