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.最简单的用法开始
不使用任何参数:
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.既然试用了BOTH参数,我们再看一下“TRAILING”和“LEADING”参数效果
sec@ora10g> select trim (trailing from ' SECOOLER ') "TRIM e.g." from dual;
TRIM e.g.
------------
SECOOLER
sec@ora10g> 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”参数就派上用场了。
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”字符串的要求,有么有其他手段呢?of course有。我们使用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函数带来便利的同时,建议对每一个常用函数都追本溯源地探究一下,也许在尝试之后您会发现:哦,原来大家经常用到这些方法只是其真实功能的沧海一粟
转自:http://www.2cto.com/database/201208/147087.html
ORACLE中的LTRIM、RTRIM和TRIM的更多相关文章
- SQL 中LTrim、RTrim与Trim的用法
LTrim.RTrim与 Trim 函数 返回 Variant (String),其中包含指定字符串的拷贝,没有前导空白 (LTrim).尾随空白 (RTrim) 或前导和尾随空白 (Trim).语法 ...
- LTrim、RTrim 和 Trim 函数
返回不带前导空格 (LTrim).后续空格 (RTrim) 或前导与后续空格 (Trim) 的字符串副本. LTrim(string) RTrim(string) Trim(string) strin ...
- oracle中的trim()函数详解
1.先看一下Oracle TRIM函数的完整语法描述 TRIM([ { { LEADING | TRAILING | BOTH }[ trim_character ]| trim_character} ...
- 去除前后空格,Oracle和SQLSERVER都适用。ltrim(rtrim(’ ‘))
Oracle自带去除方法:trim(). 但是sql语法中没有直接去除两头空格的函数,但有ltrim()去除左空格rtrim()去除右空格. 合起来用就是sql的trim()函数,即select lt ...
- javascript模仿php 函数 trim ltrim rtrim (原创)
javascript模仿php 函数 trim ltrim rtrim,去除字符串两边空格或其他符号 本文地址:js trim js php trim function trims(){ this. ...
- javascript对字符串的常见操作trim,ltrim,rtrim,isEmpty,isFloat等
1.验证字符串是否为空格.是否包含非法字符. //验证是否字符串有非法字符 function v_invalide_char(value,msg){ var arr = ['#','@','!','$ ...
- oracle中如何对字符串进行去除空格的方法
oracle中如何对字符串进行去除空格的方法 今天学习了一下oracle中如何对字符串进行去除空格的方法,这里总结一下.了解到的方法主要有两种:Trim函数以及Replace函数.下面我详细的介绍一下 ...
- Oracle中的数据类型和数据类型之间的转换
Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...
- Oracle中的单行函数
Oracle中的单行函数 1 字符函数 UPPER()--将字符串转换为大写 SELECT UPPER('abc') FROM dual; LOWER()-将字符串转换为小写 SELECT LOWER ...
随机推荐
- Android入门(一)
原文链接:http://www.orlion.ga/387/ 一.安卓的系统架构 1. linux内核层,这一层为安卓设备提供底层的驱动 系统运行库层,这一层通过一些C/C++库来为Android系统 ...
- 软件工程第二次作业——git的使用
1. 参照 http://www.cnblogs.com/xinz/p/3803109.html 的第一题,每人建立一个GitHub账号,组长建立一个Project,将本组成员纳入此Porject中的 ...
- Java线程并发:知识点
Java线程并发:知识点 发布:一个对象是使它能够被当前范围之外的代码所引用: 常见形式:将对象的的引用存储到公共静态域:非私有方法中返回引用:发布内部类实例,包含引用. 逃逸:在对象尚未准备 ...
- MySQL 处理重复数据
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 本博文我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据. 防 ...
- sql语句with as 和with(nolock)
当with和as一起用时,表示定义一个SQL字句 例: with sonword as ( select * from person ) select * from student where n ...
- js入门学习~ 运动应用小例
要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰) 主要是练习多个物体的运动框架~~ --------------------- ...
- AC日记——楼房 codevs 2995
2995 楼房 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 地平线(x轴)上有n个矩(lou ...
- linux网络编程tcp
之前学习的时候笔记没有保存好,这次重新编写一个案例. 客户端实现程序代码: #include <string.h> #include <stdlib.h> #include & ...
- [bzoj2588][count on a tree] (主席树+lca)
Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始 ...
- [LeetCode] Intersection of Two Arrays II 两个数组相交之二
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...