是挺怪的,
select rtrim('aaa bbb aaa abc aaa', 'abc'),
       rtrim('aaa bbb aaa abc aaa', 'aaa'),
       ltrim('aaa bbb aaa abc aaa', 'abc')
  from dual
结果:
---------------   ----------------   ----------------    
aaa bbb aaa abc  aaa bbb aaa abc   bbb aaa abc aaa

解决方案 »

  1.   

    LTRIM removes characters from the left of char, with all the leftmost characters
    that appear in set removed; 
    Oracle begins scanning char from its first character and removes all characters that appear in set until reaching a character not in set and then returns the result.结果符合说明
      

  2.   

    这个可以从LTRIM和RTRIM的解释中了解,LTRIM(string[,trimchars])
    RTRIM(string[,trimchars])
    --
    其中:
    string 任意VARCHAR2型或CHAR型的数据
    trimchars 准备压缩掉的字符(串)一般前缀字符总是空格。LTRIM是左匹配一个字符所以:
    SQL> select ltrim('aaa bbb aaa abc aaa', 'abc') from dual;LTRIM('AAABBBAAAABCAAA','ABC')
    ------------------------------
     bbb aaa abc aaa
    这样的结果就是去除左边起一个字符为'a'开头的非空字符串RTRIM是右匹配一个字符所以:
    SQL> select rtrim('aaa bbb aaa abc aac','abc') from dual;RTRIM('AAABBBAAAABCAAC','ABC')
    ------------------------------
    aaa bbb aaa abc
    这样的结果就是去除右边起一个字符为'c'开头的非空字符串trimchars 你可以直接理解为一个字符就不会有疑惑了