ORACLE中的LTRIM、RTRIM和TRIM

LTRIM、RTRIM和TRIM在ORACLE中的用法:
1、LTRIM(C1,C2)
其中C1和C2都可以字符串,例如C1是‘Miss Liu‘,C2‘MisL‘等等。这是第一个和SQL SERVER不一样的地方。如果记得不错的话SQL Server的LTRIM只有一个参数,作用是去掉字符串左面的空格。而Oracle的LTRIM则是保证C1的第一个字符不能出现在C2字符串中。

SQL> select LTRIM( ‘Miss Liu‘, ‘Liu‘) Result  from dual;

RESULT
--------
Miss Liu

SQL> select LTRIM( ‘Miss Liu‘, ‘M is‘) result from dual;

RES
---
Liu

从上述就可以看出LTRIM的作用。但是如果第二个字符串不进行输入,那么LTRIM的作用和SQL SERVER中就相同,就是去掉左面的空格。

SQL> select ltrim( ‘  Miss Liu  ‘ ) result from dual;

RESULT
----------
Miss Liu

SQL> select length( ‘  Miss Liu  ‘ ) len1, length( ltrim( ‘  Miss Liu  ‘ ) ) lentrim from dual;

LEN1    LENTRIM
    ----------   ----------
        12         10

由上述可以看出Oracle的LTrim的功能应该更强大一些,能够对前导符进行操作。

2、RTRIM的功用和LTRIM相同,但是RTRIM修改成了从右向左的,这样子就是去掉后导符中的特定字符。

3、TRIM的功能如下描述:

In Oracle/PLSQL, the trim function removes all specified characters either from the beginning or the ending of a string.

The syntax for the trim function is:

trim( [ leading | trailing | both  [ trim_character ]  ]   string1 )

leading - remove trim_string from the front of string1.

trailing - remove trim_string from the end of string1.

both - remove trim_string from the front and end of string1.

If none of these are chosen (ie: leading, trailing, both), the trim function will remove trim_string from both the front and end of string1.

trim_character is the character that will be removed from string1. If this parameter is omitted, the trim function will remove all leading and trailing spaces from string1.

string1 is the string to trim.

trim(‘   tech   ‘) would return ‘tech‘
trim(‘ ‘  from  ‘   tech   ‘) would return ‘tech‘
trim(leading ‘0‘ from ‘000123‘) would return ‘123‘
trim(trailing ‘1‘ from ‘Tech1‘) would return ‘Tech‘
trim(both ‘1‘ from ‘123Tech111‘) would return ‘23Tech

如果提到TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种。
然而TRIM函数其实是具有删除“任意指定”字符的功能,不可谓不牛。我们来一次体验之旅。

1.先看一下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.最简单的用法开始
不使用任何参数:
[email protected]> select trim (‘    SECOOLER    ‘) "TRIM e.g." from dual;

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

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

3.其实第一种常用的方法等同于下面带有“BOTH”参数的写法
[email protected]> select trim (both from ‘    SECOOLER    ‘) "TRIM e.g." from dual;

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

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

4.既然试用了BOTH参数,我们再看一下“TRAILING”和“LEADING”参数效果
[email protected]> select trim (trailing from ‘    SECOOLER    ‘) "TRIM e.g." from dual;

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

[email protected]> select trim (leading from ‘    SECOOLER    ‘) "TRIM e.g." from dual;

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

可见,使用“TRAILING”参数可以完成字符串尾部空格的删除功能;而“LEADING”参数正好相反,完成字符串头部空格的删除功能。
也就是说,使用“TRAILING”和“LEADING”参数可以指定空格的删除位置。

5.“trim_character”参数粉墨登场
这个参数改变了“删除空格”的默认行为。
如果想要删除字符串‘xxxxSECOOLERxxxx‘前后出现的“x”,“trim_character”参数就派上用场了。
[email protected]> select trim (‘x‘ from ‘xxxxSECOOLERxxxx‘) "TRIM e.g." from dual;

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

配合“BOTH”、“TRAILING”和“LEADING”三个参数使用效果如下,与之前演示类似。看结果,不赘述。
[email protected]> select trim (both ‘x‘ from ‘xxxxSECOOLERxxxx‘) "TRIM e.g." from dual;

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

[email protected]> select trim (trailing ‘x‘ from ‘xxxxSECOOLERxxxx‘) "TRIM e.g." from dual;

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

[email protected]> select trim (leading ‘x‘ from ‘xxxxSECOOLERxxxx‘) "TRIM e.g." from dual;

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

6.需要注意的地方
这里的“trim_character”参数只允许包含一个字符,不支持多字符。
报错信息如下:
[email protected]> 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”字符串的要求,有么有其他手段呢?of course有。我们使用RTRIM和LTRIM“连环拳”完成这个任务。
1)使用RTRIM
[email protected]> select rtrim(‘xyxxSECOOLERxyyx‘,‘xy‘) "e.g." from dual;

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

2)使用LTRIM
[email protected]> select ltrim(‘xyxxSECOOLERxyyx‘,‘xy‘) "e.g." from dual;

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

3)联合使用RTRIM和LTRIM函数达到我们的目的
[email protected]> select ltrim(rtrim(‘xyxxSECOOLERxyyx‘,‘xy‘),‘xy‘) "e.g." from dual;

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

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

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

转自:http://www.2cto.com/database/201208/147087.html

时间: 2024-10-15 18:20:55

ORACLE中的LTRIM、RTRIM和TRIM的相关文章

Oracle 你真的会用ltrim/rtrim函数吗?

常见的用法是去除空格,有多少人不知道它们其实还可以做到去除空格,它有ltrim().ltrim(x,y)方法 ------- 去两边空格,去左空格,去右空格 -------- select trim(' X-rapido ') name from dual; 返回 'X-rapido' select ltrim(' X-rapido ') name from dual; 返回 'X-rapido ' select rtrim(' X-rapido ') name from dual; 返回 ''

oracle中的trim()函数详解

1.先看一下Oracle TRIM函数的完整语法描述 TRIM([ { { LEADING | TRAILING | BOTH }[ trim_character ]| trim_character}FROM]trim_source) 以上语法引自于Oracle 10gR2官方文档:http://download.oracle.com/docs/ ... 0/img_text/trim.htm单从这个语法定义上我们就可以看出,小小的Oracle TRIM函数蕴含了更多可定制的功能.一一展示,供参

实现std::string的ltrim、rtrim和trim方法

stl库的std::string类型没有提供常用的ltrim/rtrim/trim成员函数.下面的代码通过外部独立函数的形式实现了这些功能: 1 namespace { 2 bool isntspace(const char& ch) { 3 return !isspace(ch); 4 } 5 } // end of namespace 6 7 const string ltrim(const string& s) { 8 string::const_iterator iter = fi

oracle中110个常用函数介绍

1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2. CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C --

Oracle中的单行函数

Oracle中的单行函数 1 字符函数 UPPER()--将字符串转换为大写 SELECT UPPER('abc') FROM dual; LOWER()-将字符串转换为小写 SELECT LOWER('ABC') FROM dual; INITCAP()-首字母大写,其它字母小写. SELECT INITCAP('hello') FROM dual; REPLACE()-将指定的字符/字符串替换 SELECT REPLACE('abcd efg','cd','XXX') FROM dual;

Oracle中的字符串类型及相关函数详解

1.概述 本文介绍String类型及相关的函数,基于当前最新的Oracle 12c 为基础作介绍. 下文将字符串简称为串. Oracle函数的工作方式有两种: 1.根据旧的对象创建新的对象--他们对原来的信息进行修改,如改变字母的大小写. 2.告诉用户有关的信息,如一个单词或句子中有几个字符. 后续会更新另外两种处理文本的方式:Oracle中的正则表达式 和 Oracle Text工具,等文章编辑完成,会在此处添加链接. Oracle中主要有两种字符串类型:CHAR和VARCHAR2,他们以字母

oracle中的常用函数

oracle中的常用函数 1. 字符串常用函数 函数名 说明 concat 用来连接字符串的函数,只能连接两个字符串.如果想连接多个字符串可以使用"||"符号 initcap 把每个单词的首字母大写. instr(‘母字符串’,‘子字符串’) 母字符串:被查找的字符串.子字符串:要查找的字符串. 如果有第三个参数,代表从第几个字符开始查找. 第四个参数代表查询第几次出现的字符串的下标,默认是1. 查询不到返回0 select instr('410106199012132018','19

oracle中的函数

ORACLE中函数          Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型.常见的有两类,单行函数和分组函数 . 单行函数: 单行函数 分类 函数 功能 示例 字符函数 LPAD(<c1>,<i>[,<c2>]) 在字符串c1的左边添加字符串c2直到c1字符串的长度等于i. SELECT  LPAD('Hello!',9,1) leftpad,RPAD(

oracle中多行合并聚合函数

在oracle数据库中, 进行字段合并,可以使用wm_concat(column)函数,但是在这种方法不被Oracle所推荐,因为WMSYS用户用于Workspace Manager,其函数对象可能因版本而不同而出现异常,这种变化在11.2.0.3及10.2.0.5中体现出来.原本WM_CONCAT函数返回值为 VARCHAR2,但在一些版本下就会变更为CLOB.这一变化导致了很多程序的异常. Oracle建议用户使用自定义函数来实现该功能,而不是使用WorkSpace的这个内部函数.这个函数包