当前位置:K88软件开发文章中心编程全书编程全书01 → 文章内容

Oracle中Trim函数的使用方法

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2019-1-3 1:52:05

:2012-05-11 09:13:56

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

1.Oracle中trim函数的语法格式

TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)

以上语法引自于Oracle 10gR2官方文档:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/img_text/trim.htm

单从这个语法定义上我们就可以看出,小小的TRIM函数蕴含了更多可定制的功能。

2.删除字符串前后的空格

如果trim函数不使用任何参数时,可以去除字符串前后的空格

sec@ora10g> select trim (' SECOOLER ') "TRIM e.g." from dual;

TRIM e.g
--------
SECOOLER

这也是最常见的一种使用方法,都使用默认的参数,默认情况下TRIM会同时删除字符串前后出现的空格。

3.both参数的使用方法

sec@ora10g> select trim (both from ' SECOOLER ') "TRIM e.g." from dual;

TRIM e.g
--------
SECOOLER

“BOTH”参数表示同时去除字符串前后所指定的内容(默认情况下删除空格)。

4.“TRAILING”和“LEADING”参数的使用方法

sec@ora10g> select trim (trailing from ' SECOOLER ') "TRIM函数使用" from dual;

TRIM函数使用
------------
SECOOLER

sec@ora10g> select trim (leading from ' SECOOLER ') "TRIM函数使用" from dual;

TRIM函数使用
------------
SECOOLER

可见,使用“TRAILING”参数可以完成字符串尾部空格的删除功能;而“LEADING”参数正好相反,完成字符串头部空格的删除功能。

也就是说,使用“TRAILING”和“LEADING”参数可以指定空格的删除位置。

5.“trim_character”参数粉墨登场

这个参数改变了“删除空格”的默认行为。

如果想要删除字符串'xxxxSECOOLERxxxx'前后出现的“x”,“trim_character”参数就派上用场了。

sec@ora10g> select trim ('x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;

TRIM e.g
--------
SECOOLER

配合“BOTH”、“TRAILING”和“LEADING”三个参数使用效果如下,与之前演示类似。看结果,不赘述。

sec@ora10g> select trim (both 'x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;

TRIM e.g
--------
SECOOLER

sec@ora10g> select trim (trailing 'x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;

TRIM e.g.
------------
xxxxSECOOLER

sec@ora10g> select trim (leading 'x' from 'xxxxSECOOLERxxxx') "TRIM e.g." from dual;

TRIM e.g.
------------
SECOOLERxxxx

6.需要注意的地方

这里的“trim_character”参数只允许包含一个字符,不支持多字符。

报错信息如下:

sec@ora10g> select trim (leading 'xy' from 'xyxxSECOOLERxyyx') "TRIM e.g." from dual;
select trim (leading 'xy' from 'xyxxSECOOLERxyyx') "TRIM e.g." from dual

*
ERROR at line 1:
ORA-30001: trim set should have only one character

既然TRIM不能满足我们删除只剩“SECOOLER”字符串的要求。我们使用RTRIM和LTRIM“连环拳”完成这个任务。

1)使用RTRIM

sec@ora10g> select rtrim('xyxxSECOOLERxyyx','xy') "e.g." from dual;

e.g.
------------
xyxxSECOOLER

2)使用LTRIM

sec@ora10g> select ltrim('xyxxSECOOLERxyyx','xy') "e.g." from dual;

e.g.
------------
SECOOLERxyyx

3)联合使用RTRIM和LTRIM函数达到我们的目的

sec@ora10g> select ltrim(rtrim('xyxxSECOOLERxyyx','xy'),'xy') "e.g." from dual;

e.g.
--------
SECOOLER

使用RTRIM和LTRIM函数时的注意事项:“xy”不表示整个“xy”字符串进行匹配,而是发现任意的字符“x”或字符“y”均做删除操作。

7.小结

在感受Oracle函数带来便利的同时,建议对每一个常用函数都追本溯源地探究一下,也许在尝试之后您会发现:哦,原来大家经常用到这些方法只是其真实功能的沧海一粟。


Oracle中Trim函数的使用方法