关键词不能为空

当前您在: 主页 > 英语 >

Oracle TRIM、LTRIM、RTRIM函数功能与缺陷详解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-08 09:07
tags:

-

2021年2月8日发(作者:then)


LTRIM(


左截断


) RTRIM


(右截断)函数



LTRIM (string


[,’Alpha’])



Left TRIM (


左截断


)


删去左边出现的 任何


Alpha


字符。



RTRIM (string


[,’


Alpha


’])



Right TRIM (


右截断


)


删去右边出现的 任何


Alpha


字符。




1




select LTRIM('ABCDDCBA','D')



--BCDCBA





1


select RTRIM('ABCDCBA','A')


--ABCDCB



2




select TRIM('D' from 'ABCDDCBA')








3




顾名思义,


TRIM


即表示全部截断,不分 左右(可以在参数里选择):




TR IM


可以使你对给定的字符串进行裁剪(前面,后


面或前后)。



如果指定



LEADING, Oracle



trim_char


中裁剪掉


前面的字符;



如果指定


TRAILING, Oracle



trim_char


中裁剪掉


尾面的字符;



如果指定


BOTH



Ora cle



trim_char


中裁剪 掉所有


指定字符(注意,此处有限制,只能是单个字符,而


且无 法取出位于字符串正中间的字符,这个在后面说



)

< p>


如果指定两个都指定或一个都没有给出,


Ora cle



trim_char


中裁剪掉前面及尾面的字符;



如果不指定



trim_character,


缺省为空格符;



如果只指定


trim_source, Oracle Oracle



trim_char


中裁剪掉前面及尾面的字符。



例:



select TRIM('D' from 'ABCDDCBA')


dual;



--BCDDCB




4





于是乎我就在想它如果遇到字符串长度单双会怎么裁剪呢?然 后就发现


bug


了!



如下:



select TRIM('D' from 'ABCDCBA')


---

字符串长度为单数时无法删除


正中间的字符



ABCDCBA


select LTRIM('ABCDCBA','D')


--ABCDCBA


select RTRIM('ABCDCBA','D')


--ABCDCBA


select TRIM('D' from 'ABCDDCBA')



---

字符串长度为单数时无法


删除正中间的字符



ABCDDCBA


select LTRIM('ABCDDCBA','D')


select RTRIM('ABCDDCBA','D')



暴漏出的缺 陷是:


1


、这三个


TRIM

< p>
函数都无法对位于字符串正中间的字符进行处理;

















2



TRIM


函数仅支持去除单个字符,而


LTRIM



RTRIM


则可支持


多个字符。





5





以上为个人原创,如需详细了解可以参考如下文档:






ora cle



trim


< br>ltrim



rtrim


函数用 法



oracle


< br>trim



ltrim



rtrim


函数用法



该函数共有两种作用:



第一种,即大家都比较熟悉的去除空格。



例子:



--TRIM


去除指定字符的前后空格



SQL> SELECT TRIM(' dd df ') FROM dual;



TRIM('DDDF')



------------



dd df




--LTRIM


去除指定字符的前面空格



SQL> SELECT LTRIM(' dd df ') FROM dual;



LTRIM('DDDF')



-------------



dd df




--RTRIM


去除指定字符后面后空格




SQL> SELECT RTRIM(' dd df ') FROM dual;



RTRIM('DDDF')



-------------



dd df




第二种,去除指定的字符。< /p>


trim


只能去除单个字符


,而


ltrim



rtrim


可以去除多个字符。




trim


去除字符的写法:



--


表示字符串


string2


去除前面


|


后面


|

< p>
前后面(


leading|trailing|both

< br>)的字符


string1


,默认


去除方式为


both



SELECT TRIM(leading|trailing|both string1 FROM string2) FROM dual;



例子:



SQL> SELECT trim(leading 'd' from 'dfssa') FROM dual;



TRIM(LEADING'D'FROM'DFSSA')



---------------------------



fssa




SQL> SELECT trim(both '1' from '123sfd111') FROM dual;



TRIM(BOTH'1'FROM'123SFD111')



----------------------------



23sfd




SQL> SELECT trim(trailing '2' from '213dsq12') FROM dual;



TRIM( TRAILING'2'FROM'213DSQ12'



-- ----------------------------



213dsq1



< br>注:


trim


去除字符只能是单个字符,如下,要去除的 字符若为字符集则报错



SQL> SELECT trim(trailing '12' from '123dsq12') FROM dual;



SELECT trim(trailing '12' from '123dsq12') FROM dual



ORA-30001:


截取集仅能有一个字符



< p>
ltrim



rtrim


去除字符的写法:



--


表示字符串< /p>


string1


去除前面与


string 2


字符集匹配的,若无匹配则结束返回



SELECT ltrim(string1,string2) FROM dual;


--rtrim



ltr im


类似,只是去除的是右边算起匹配的字符



SELECT rtrim(string1,string2) FROM dual;



例子:



--


如下,由于从右边算起,第一个字母是


b


没有与


'main'


匹配的字符,因此返回结果 仍是


'aaaaminb'



SQL> SELECT rtrim('aaaaminb','main') FROM dual;



RTRIM('AAAAMINB','MAIN')



------------------------



aaaaminb




--


如下返回结果为空



SQL> SELECT rtrim('aaaaminb','mainb') FROM dual;



RTRIM('AAAAMINB','MAINB')


-


-


-


-


-


-


-


-



本文更新与2021-02-08 09:07,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/613516.html

Oracle TRIM、LTRIM、RTRIM函数功能与缺陷详解的相关文章