ORACLE对字符串去空格处理(trim)
⾸先便是这Trim函数。Trim 函数具有删除任意指定字符的功能,⽽去除字符串⾸尾空格则是trim函数被使⽤频率最⾼的⼀种。语法Trim ( string ) ,参数string:string类型,指定要删除⾸部和尾部空格的字符串返回值String。函数执⾏成功时返回删除了string字符串⾸部和尾部空格的字符串,发⽣错误时返回空字符串("")。如果参数值为null时,会抛出空指针异常。在oracle中,trim使⽤的形式多为⼈rtrim()与ltrim()两种,分别为去除字符串右边空格与去除字符串左边空格。
当然trim的功能不⽌如此,下⾯进⾏细致的介绍,这⾥我多以去除字符串空格为例。
我们看下trim函数的语法描述:trim( [ {  {leading|trailing|both}  [trim_character]|trim_character}  from] trim_source
1)、不使⽤任何参数
SQL> select trim('  11  ') aa from dual;
AA
--
11
这是最常见的⼀种使⽤⽅法,都使⽤默认的参数,默认情况下TRIM会同时删除字符串前后出现的空格。
2)、使⽤both参数,效果等同于⽅法⼀不使⽤任何参数
SQL> select trim(both from '  11  ') aa from dual;
AA
--
11
“BOTH”参数表⽰同时去除字符串前后所指定的内容(默认情况下删除空格)。
3)、使⽤leading与trailing参数
SQL> select trim(leading from '  11  ') aa from dual;
AA
----
11
SQL> select trim(trailing from '  11  ') aa from dual;
AA
-----
11
从结果中得分隔符'-',可以发现使⽤leading参数可以去除字符串右端的空格,⽽trailing参数则可以去除字符串左端的空格。正如oracle提供的rtrim()与ltrim()。
4)、使⽤trim_character参数
trim_character参数改变了“删除空格”的默认⾏为。如果想要删除字符串'xxxxWORLDxxxx'前后出现的“x”,“trim_character”参数就派上⽤场了。
SQL> select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
trim_character配合“both”、“trailing”和“leading”三个参数使⽤效果如下,与之前演⽰类似。看结果,不赘述。
SQL> select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
SQL> select trim(both 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
-----
WORLD
SQL> select trim(trailing 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
---------
xxxxWORLD
SQL> select trim(leading 'x' from 'xxxxWORLDxxxx') aaaaa from dual;
AAAAA
---------
WORLDxxxx
必须注意的⼀点是这⾥的“trim_character”参数只允许包含⼀个字符,不⽀持多字符。trim不能满⾜我们去除多字符要求,但是我们可以使⽤rtrim和ltrim来处理。
1)使⽤rtrim
SQL> select rtrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
AAAAA
---------------
ORxxxxWORLDxxxx
2)使⽤ltrim
SQL> select ltrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;
AAAAA
---------------
xxxxWORLDxxxxOR
3)联合使⽤RTRIM和LTRIM函数达到我们的⽬的
SQL> select rtrim(ltrim('ORxxxxWORLDxxxxOR','OR'),'OR') aaaaa from dual;
AAAAA
-------------
xxxxWORLDxxxx
使⽤rtrim和ltrim函数时的注意事项:“OR”不表⽰整个“OR”字符串进⾏匹配,⽽是发现任意的字符“O”或字符“R”均做删除操作。
对于trim函数的应⽤就介绍到,下⾯介绍⼀下replace函数,个⼈觉得replace函数在去空格时更好⽤。replace 函数⽤第三个表达式替换第⼀个字符串表达式中出现的所有第⼆个给定字符串表达式。来看下replace函数的语法描述:
replace('string_replace1','string_replace2','string_replace3')
'string_replace1' 待搜索的字符串表达式,string_replace1 可以是字符数据或⼆进制数据。
'string_replace2' 待查的字符串表达式,string_replace2 可以是字符数据或⼆进制数据。
'string_replace3' 替换⽤的字符串表达式,string_replace3 可以是字符数据或⼆进制数据。
trim函数的作用是删除文本的什么空格
返回类型,如果 string_replace(1、2 或 3)是⽀持的字符数据类型之⼀,则返回字符数据;如果 string_replace(1、2 或 3)是⽀持的binary 数据类型之⼀,则返回⼆进制数据。
这⾥我们依然以去空格为例。
SQL> select replace('  aa  kk  ',' ','') abcd from dual;
ABCD
----
aakk
与使⽤trim函数的结果进⾏对⽐,我们可以发现,使⽤replace函数不仅可以去除字符串两端的空格,也可去除字符串内部的空格。
当然,如果只是要去除字符串两端的空格,使⽤trim函数效率会更⾼

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。