Oracle之trim( )、ltrim( )、rtrim( )三个函数
Oracle之trim( )、ltrim( )、rtrim( )三个函数的用法及陷阱
一、去除字符串前后空格(基本用法)
trim(string):去除指定字符串string的左右空格,当然,string中间有空格的时候是不会被去除的
- HAVING 子句:Wheret和having子句都用来筛选数据,但是where是针对原数据进行筛选,而having子句只是针对汇总后的结果进行
select deptno, job, avg(sal)
from emp
where hiredate >= to_date('1981-05-01','yyyy-mm-dd')
group by deptno,job
having avg(sal) > 1200
order by deptno,job;
--Order by排序:如果order by后跟着多个字段,默认排序是先对第一个字段升序排序,然后再排第二个字段
ltrim(string)、rtrim(string):分别去除指定字符串string左侧和右侧的空格
特殊情况:字符串左右的空格真的可以全部都去掉吗?不见得。如果你的字符串两侧带有全角空格,你就会惊奇的发现,全角空格完全去不掉!包括Java中trim()方法,对于字符串前后的全角空格也是无能为力。
二、去除字符串左右 / 中指定字符(进阶用法)
去除空格仅仅是这三个函数的“默认行为”,事实上,这三个函数还可以接收其他的参数来完成在指定字符串左右 / 中去除字符。
trim( leading | trailing | both string1 FROM string2):从string2中去除左侧 | 右侧 | 左侧两侧(默认是both,即左右侧都去掉)的string1字符,注意,string1只能是单个字符。
SELECT trim(leading ’ ’ from ’ aaa bbb ccc ') leadingtrim FROM dual;
LEADINGTRIM
---------------------
aaa bbb ccc (注意,此时返回的字符串右侧是有空格的)
SELECT trim(trailing ’ ’ from ’ aaa bbb ccc ') trailingtrim FROM dual;
TRAILINGTRIM
---------------------
aaa bbb ccc(显然,此时返回的字符串左侧是有空格的)
SELECT trim(both ’ ’ from ’ aaa bbb ccc ') bothtrim FROM dual;
BOTHTRIM
----------------
aaa bbb ccc(返回的字符串两侧的空格都被去掉)
(注意,以上三个示例中,如果都是要完成“去空格”的话,可以简写成 trim( leading | trailing | both FROM string),即省略空格。)
前面介绍的全角空格不能去除的问题,在这里就可以得到解决了,即将string1也写成全角空格,这样,我们就是”从string2这个左右带全角空格的字符串中将左右的全角空格去掉”了。你看,so EZ
—还没看
ltrim(string1,string2),rtrim**(string1,string2):从字符串string1左侧(右侧)开始去除与string2字符集合中单个字符**匹配的字符,直到在string1中遇上某个字符,该字符不在string2字符集合中。
这段话读起来有点拗口,但是对于真正理解这两个函数的用法至关重要。oracle中的这两个函数中的第二个参数,可以是多个字符组成的“字符集合”,为什么说是“字符集合”而不是“字符串”(虽然严格意义上讲并没有字符集合这个概念),因为在以string2为基础对string1做字符去除的时候,string2并不是作为一个字符串那样的整体来与string1匹配的,而是单个单个字符的匹配。比如string1=‘abccba’,string2=‘abc’,如果string2作为一个整体来匹配,显然不管是用ltrim还是rtrim函数,对string1操作之后返回的结果应该是’cba’,但实际上不是,返回的是一个空串!
SELECT ltrim(‘abccba’,‘abc’) ltrim FROM dual;
LTRIM
--------
(返回的是空串)
SELECT rtrim(‘abccba’,‘abc’) rtrim FROM dual;
RTRIM
--------
(返回的是空串)
而至于“直到在string1中遇上某个字符,该字符不在string2字符集合中”这句话,则是体现ltrim函数和rtrim函数区别的时候。我们在上面两个例子的基础上对string1稍作改动,在string1中加个“x”:
SELECT ltrim(‘abcxcba’,‘abc’) ltrim FROM dual;
LTRIM
--------
xcba(结果并不是只剩一个“x”,而是包括stirng1中“x”以及右侧的字符)
SELECT rtrim(‘abcxcba’,‘abc’) rtrim FROM dual;
RTRIM
--------
abcx(结果并不是只剩一个“x”,而是包括stirng1中“x”以及左侧的字符)
ltrim函数从string1左侧往右读,左侧前三个字符分别在string2中找到了对应的单个字符匹配,所以都被去除掉,读到“x”的时候,没有匹配上,所以从这开始到string1右侧都被保留并返回;相反,rtrim函数从string2右侧往左读,右侧前三个字符分别在string2中找到了对应的单个字符匹配,所以都被去掉,读到“x”的时候,没有匹配上,所以从这开始到string1左侧都被保留并返回。
由此类推,如果string1中左侧(右侧)第一个字符在string2中找不到对应,那么ltrim(rtrim)函数将会把string1字符串完整返回:
SELECT ltrim(’ abcxcba’,‘abc’) ltrim FROM dual;
LTRIM
--------
abcxcba(string2中并没有空格这个字符串,所以string1带着左侧空格完整返回了)
病灶时间:可能有些朋友在使用trim()、ltrim()、rtrim()这三个函数的进阶用法的时候会出现一个问题,即“我明明指定以空格为条件去除原字符串,为什么返回的是一个空串”,可能的原因是错把“空串”当“空格”。“空串”指的是两个单引号之间什么也没有(即 ‘’ ,看起来跟英文输入法里面一个双引号一样),而“空格”指的是两个单引号之间有个空格(即 ’ ',这个看起来就不像英文输入法里面的双引号了)。如果使用的是空串,原字符串会被去的干干净净的!
Oracle之trim( )、ltrim( )、rtrim( )三个函数相关推荐
- Oracle之trim,ltrim,rtrim三个函数的用法
基础用法: 去除指定字符串前后的空格 select trim(' hello caicai ')trim from dual;--当不加别名时,显示字符串右边还是有空格. 2.去除指定字符串左右的空格 ...
- [导入]JavaScript常用函数:Trim() LTrim() RTrim()
//功能:JavaScript的Trim(), Ltrim(), RTrim() 函数 //来源:http://jorkin.reallydo.com/article.asp?id=460 Strin ...
- PHP字符串函数之 trim ltrim rtrim chop
PHP字符串函数之 trim ltrim rtrim chop trim – 去除字符串首尾处的空白字符(或者其他字符) ltrim – 删除字符串开头的空白字符(或其他字符) rtrim – 删除字 ...
- C语言的Trim, LTrim, RTrim
抽空写了个C语言的Trim(), LTrim(), RTrim(),代码如下: #include <iostream> using namespace std; char * LTrim( ...
- php之 trim ltrim rtrim 小坑
trim, ltrim, rtrim , 有第二个参数,可以指定过滤的字符 小坑demo: //ltrim区分左边的 间隔就是右边第一个字符, 这样写没有可读性 $str = "qwerty ...
- Oracle之trim( )、ltrim( )、rtrim( )三个函数的用法及陷阱
最近整理一份oracle常用函数清单的时候发现其经常用来去除字符串空格的三个函数,也就是trim().ltrim().rtrim(),看起来简简单单,其实大有玄机.以下见解来自网络,但内容经由博主撰写 ...
- PHP字符串去除首尾指定字符的trim ltrim rtrim函数
今天,我们看一个比较简单的处理字符串函数,我们都知道在表单提交的过程中,可用户输入的内容不一定就是和你想的一样合法的数据,就比如输入用户名或者邮箱的时候在input框空了几个空格,这样进入数据库中的数 ...
- ORACLE字符串截取函数trim(),ltrim(),rtrim()
1.TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1). 看起来很复杂,理解起来很简单: (1)如果没有指定任何参数则oracle去除c1头尾空格 例如:SELE ...
- substr instr trim ltrim rtrim函数详解
substr('源字符串',开始位置,截取长度) substr('This is a test', 6, 2) would return 'is' substr(' ...
最新文章
- joc杂志影响因子2019_2019年放射学领域SCI主要杂志影响因子汇总
- 在网页中画Icon小图标
- localhost与127.0.0.1的区别
- java播放声音和图片的代码_java怎么将出片处理成老照片?怎么播放声音?
- error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or
- matlab微分的语句格式,偏微分差分四种格式的matlab程序.doc
- SAP CRM呼叫中心end按钮的实现逻辑
- 网络知识:视频监控传输带宽与存储容量的计算方法
- cassandra使用心得_使用Cassandra和Nutch爬网
- H.264中的一些易混淆概念
- android.util.Log常用的方法
- Android性能优化之UI实战
- 24. Magento 创建新闻模块(4)
- Acrok MXF Converter for Mac(专业的MXF格式视频转换工具)
- Windows设置眼睛保护色
- 大数据工程师面临哪些行业机遇与挑战?
- 半中括号怎么用公式编辑器打?
- 苏宁低调内测“宁互宝”,网络互助成巨头必争之地...
- java组件叠加显示,如何让上层的组件一直在上层显示
- torch.nn、(二)
热门文章
- ICS4U Summative Project: Hangman
- 国外版iPad插卡无法使用,显示GigSky,且无法使用,解决方法
- 长安大学转计算机专业,关于做好2019级本科生校内转专业工作的通知
- Codewarrior中利用PE multilink下载程序debug时不能连接问题
- 怎么压缩mp4视频大小,视频压缩不用愁
- C#中使用结构体+有参构造函数
- 对Strategy与Template Method模式的区别的一些讨论
- QCC51XX---ADK Application Framework编程指南
- PyQt5设置软件窗口图标与任务栏图标
- COMSOL——水杯中的自然对流问题