Oracle TRIM函数探究

探究TRIM函数
Oracle TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种。
然而Oracle TRIM函数其实是具有删除“任意指定”字符的功能。

1.先看一下Oracle TRIM函数的完整语法描述
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)

2.不适用任何参数
SQL> select trim('  helle,redcat  ') "greeting"
  2  from dual;
greeting
------------
helle,redcat
这是最常见的一种使用方法,都使用默认的参数,默认情况下TRIM会同时删除字符串前后出现的空格。
等同于下面带有“BOTH”参数的写法
SQL> select trim(both from '  hello,redcat  ') "greeting"
  2  from dual
  3  ;
greeting
------------
hello,redcat
“BOTH”参数表示同时去除字符串前后所指定的内容(默认情况下删除空格)。
“TRAILING”参数可以完成字符串尾部空格的删除功能。
“LEADING”参数正好相反,完成字符串头部空格的删除功能。

3.“trim_character” 参数改变了“删除空格”的默认行为。
trim删除两边指定的字符
SQL> select trim('s' from 'sssshello,redcatsss') "greeting"
  2  from dual;
greeting
------------
hello,redcat
同上
SQL> select trim(both 's' from 'ssshello,redcatsss') "greeting"
  2  from dual;
greeting
------------
hello,redcat
leading删除字符串头部指定字符
SQL> select trim(leading 's' from 'ssshello,redcatsss') "greeting"
  2  from dual;
greeting
---------------
hello,redcatsss
trailing删除字符串尾部指定字符
SQL> select trim(trailing 's' from 'ssshello,redcatsss') "greeting"
  2  from dual;
greeting
---------------
ssshello,redcat
 
以上只能删除指定单个字符,错误信息ORA-30001: trim set should have only one character若要删除多个,则需要用以下方法。

4.使用RTRIM和LTRIM“连环拳”删除指定多字符
ltrim删除字符串左边指定的字符
SQL> select ltrim('sasaashello,redcatsaassa','sa') "greeting"
  2  from dual;
greeting
------------------
hello,redcatsaassa
rtrim删除字符串右边指定的字符
SQL> select rtrim('sasaashello,redcatsaassa','sa') "greeting"
  2  from dual;
greeting
------------------
sasaashello,redcat
ltrim 和rtrim联合使用达到我们的目的
SQL> select ltrim(rtrim('sasaashello,redcatsaassa','sa'),'sa') "greeting"
  2  from dual;
greeting
------------
hello,redcat
使用RTRIM和LTRIM函数时的注意事项:“xy”不表示整个“xy”字符串进行匹配,而是发现任意的字符“x”或字符“y”均做删除操作。

5. 感悟
一个小小的函数能找出这么多功能,嘿嘿,小小发现。

相关推荐