度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle中的trim函数使用介绍 [打印本页]

作者: 万望    时间: 2020-6-2 02:39
多学习哈,不然就是书到用时方恨少
作者: 万望    时间: 2020-6-15 00:34
标题: oracle中的trim函数使用介绍
本帖最后由 万望 于 2016-7-15 00:37 编辑

Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数有更深的认识。
如果提到Oracle TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种。
然而Oracle TRIM函数其实是具有删除“任意指定”字符的功能,不可谓不牛。我们来一次体验之旅。
1.先看一下Oracle TRIM函数的完整语法描述
  1. TRIM([ { { LEADING | TRAILING | BOTH }
  2. [ trim_character ]
  3. | trim_character
  4. }
  5. FROM
  6. ]
  7. trim_source
  8. )
复制代码
单从这个语法定义上我们就可以看出,小小的Oracle TRIM函数蕴含了更多可定制的功能。
2.最简单的用法开始
不使用任何参数:
delit@www.delit.cn> select trim (' DWEYE ') "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
这也是最常见的一种使用方法,都使用默认的参数,默认情况下TRIM会同时删除字符串前后出现的空格。
3.其实第一种常用的方法等同于下面带有“BOTH”参数的写法
delit@www.delit.cn> select trim (both from ' DWEYE ') "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
“BOTH”参数表示同时去除字符串前后所指定的内容(默认情况下删除空格)。
4.既然试用了BOTH参数,我们再看一下“TRAILING”和“LEADING”参数效果

delit@www.delit.cn> select trim (trailing from ' DWEYE ') "TRIM e.g." from dual;
TRIM e.g.
------------
DWEYE
delit@www.delit.cn> select trim (leading from ' DWEYE ') "TRIM e.g." from dual;
TRIM e.g.
------------
DWEYE
可见,使用“TRAILING”参数可以完成字符串尾部空格的删除功能;而“LEADING”参数正好相反,完成字符串头部空格的删除功能。
也就是说,使用“TRAILING”和“LEADING”参数可以指定空格的删除位置。
5.“trim_character”参数粉墨登场

这个参数改变了“删除空格”的默认行为。
如果想要删除字符串'xxxxDWEYExxxx'前后出现的“x”,“trim_character”参数就派上用场了。
delit@www.delit.cn> select trim ('x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
配合“BOTH”、“TRAILING”和“LEADING”三个参数使用效果如下,与之前演示类似。看结果,不赘述。
delit@www.delit.cn> select trim (both 'x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g
--------
DWEYE
delit@www.delit.cn> select trim (trailing 'x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g.
------------
xxxxDWEYE
delit@www.delit.cn> select trim (leading 'x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g.
------------
DWEYExxxx
6.需要注意的地方

这里的“trim_character”参数只允许包含一个字符,不支持多字符。
报错信息如下:
delit@www.delit.cn> 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
delit@www.delit.cn> select rtrim('xyxxDWEYExyyx','xy') "e.g." from dual;
e.g.
------------
xyxxDWEYE
2)使用LTRIM
delit@www.delit.cn> select ltrim('xyxxDWEYExyyx','xy') "e.g." from dual;
e.g.
------------
DWEYExyyx
3)联合使用RTRIM和LTRIM函数达到我们的目的
delit@www.delit.cn> select ltrim(rtrim('xyxxDWEYExyyx','xy'),'xy') "e.g." from dual;
e.g.
--------
DWEYE
使用RTRIM和LTRIM函数时的注意事项:“xy”不表示整个“xy”字符串进行匹配,而是发现任意的字符“x”或字符“y”均做删除操作。


作者: 万望    时间: 2020-6-15 00:35
trim一般都是用在删除字符串两边的空格。实际上,trim也可以用来删除字符串两边的指定字符。并且trim指定删除的字符串只能是单个字符
作者: 万望    时间: 2020-6-15 00:38
每个函数用法都是“千万“”种啊
作者: 陈晓龙    时间: 2020-6-15 15:56
好深奥!




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2