yyangbb 2010-10-11 18:36
浏览 271
已采纳

关于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 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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题