yyangbb
yyangbb
2010-10-11 18:36
浏览 248

关于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条回答 默认 最新

  • CaiHuajiang
    CaiHuajiang 2010-10-12 09:04
    已采纳

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

    点赞 评论

相关推荐