trim rtrim 和replace

2023-12-27 07:48
文章标签 replace trim rtrim

本文主要是介绍trim rtrim 和replace,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    今天工作的时候碰见一个问题,一个表中某一个字段的数据需要更新但又不能全部更新,只能部分替换是最简单,所以稍微了一下oracle中如何对字符串进行替换的方法。ORACLE对字符串的处理方法主要有两种:Trim函数以及Replace函数。

首先便是这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)、不使用任何参数

 
  1. SQL> select trim(' 1 1 ') aa from dual;

  2. AA

  3. --

  4. 1 1

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

2)、使用both参数,效果等同于方法一不使用任何参数

 
  1. SQL> select trim(both from ' 1 1 ') aa from dual;

  2. AA

  3. --

  4. 1 1

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

3)、使用leading与trailing参数即是左删除和右删除

 
  1. SQL> select trim(leading from ' 1 1 ') aa from dual;

  2. AA

  3. ----

  4. 1 1

 
  1. SQL> select trim(trailing from ' 1 1 ') aa from dual;

  2.  
  3. AA

  4. -----

  5. 1 1


        从结果中得分隔符'-',可以发现使用leading参数可以去除字符串右端的空格,而trailing参数则可以去除字符串左端的空格。正如oracle提供的rtrim()与ltrim()。

4)、使用trim_character参数

trim_character参数改变了“删除空格”的默认行为。如果想要删除字符串'xxxxWORLDxxxx'前后出现的“x”,“trim_character”参数就派上用场了。

 
  1. SQL> select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;

  2. AAAAA

  3. -----

  4. WORLD

trim_character配合“both”、“trailing”和“leading”三个参数使用效果如下,与之前演示类似。看结果,不赘述。

 
  1. SQL> select trim('x' from 'xxxxWORLDxxxx') aaaaa from dual;

  2.  
  3. AAAAA

  4. -----

  5. WORLD

  6. SQL> select trim(both 'x' from 'xxxxWORLDxxxx') aaaaa from dual;

  7. AAAAA

  8. -----

  9. WORLD

  10. SQL> select trim(trailing 'x' from 'xxxxWORLDxxxx') aaaaa from dual;

  11. AAAAA

  12. ---------

  13. xxxxWORLD

  14. SQL> select trim(leading 'x' from 'xxxxWORLDxxxx') aaaaa from dual;

  15.  
  16. AAAAA

  17. ---------

  18. WORLDxxxx

       必须注意的一点是这里的“trim_character”参数只允许包含一个字符,不支持多字符。trim不能满足我们去除多字符要求,但是我们可以使用rtrim和ltrim来处理。
1)使用rtrim 

 
  1. SQL> select rtrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;

  2. AAAAA

  3. ---------------

  4. ORxxxxWORLDxxxx


2)使用ltrim

 
  1. SQL> select ltrim('ORxxxxWORLDxxxxOR','OR') aaaaa from dual;

  2. AAAAA

  3. ---------------

  4. xxxxWORLDxxxxOR


3)联合使用RTRIM和LTRIM函数达到我们的目的

 
  1. SQL> select rtrim(ltrim('ORxxxxWORLDxxxxOR','OR'),'OR') aaaaa from dual;

  2. AAAAA

  3. -------------

  4. 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 可以是字符数据或二进制数据。

返回类型,如果 string_replace(1、2 或 3)是支持的字符数据类型之一,则返回字符数据;如果 string_replace(1、2 或 3)是支持的 binary 数据类型之一,则返回二进制数据。

这里我们依然以去空格为例。

 
 
  1. SQL> select replace('   aa  kk  ',' ','') abcd from dual; 

  2. ABCD

  3. ----

  4. aakk

 

如果是要替换一个表中某个字段中的批量数据的话可以使用如下SQL

SQL> update TABLENAME t set t.A = replace(t.A,'XXXX','WWWW');

与使用trim函数的结果进行对比,我们可以发现,使用replace函数不仅可以去除字符串两端的空格,也可去除字符串内部的空格。       当然,如果只是要去除字符串两端的空格,使用trim函数效率会更高。

这篇关于trim rtrim 和replace的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542382

相关文章

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

base_dir.replace(‘\‘,‘/‘)报错SyntaxError: unterminated string literal

base_dir.replace(‘’,‘/’)报错 报错解释: 这个报错信息表明你在尝试使用Python中的replace方法来替换字符串中的字符时出现了问题。具体来说,base_dir.replace(‘’,‘/’)这行代码中,你试图将base_dir字符串中的反斜杠\替换为斜杠/,但是你的代码中反斜杠前的反斜杠是一个转义字符,它本应用来转义后面的字符。 问题可能是你在一个字符串中使

Replace All ?‘s to Avoid Consecutive Repeating Characters

Given a string s containing only lower case English letters and the '?' character, convert all the '?' characters into lower case letters such that the final string does not contain any consecutive re

Vue(十三) 路由、路由嵌套、query、param传参、propos、replace属性。编程式路由导航,特有的生命周期函数,路由守卫

文章目录 路由1. 基本使用2. 多级(嵌套)路由3. 路由query传参4. 命名路由5. 路由param传参6. propos属性7. replace属性8. 编程式路由导航9. 缓存路由组件10. actived,deactived生命周期函数11. 路由守卫1、全局路由2、独享路由3、组件内路由守卫 12. 路由器工作的两种模式 路由 路由就是一组key-value的

Python trim()切片函数去除首尾空格

def trim(s):if len(s) == 0: # 字符串为空直接返回return ''elif s[0] != ' ' and s[-1] != ' ': # 首尾不存在空格直接返回return selif s[0] == ' ': # 字符串头存在空格则截断return trim(s[1:])else:return trim(s[:-1]) # 字符串尾存在空格则截断

【Go】strings.Replace 与 bytes.Replace 调优

原文链接:https://blog.thinkeridea.com/201902/go/replcae_you_hua.html 标准库中函数大多数情况下更通用,性能并非最好的,还是不能过于迷信标准库,最近又有了新发现,strings.Replace 这个函数自身的效率已经很好了,但是在特定情况下效率并不是最好的,分享一下我如何优化的吧。 我的服务中有部分代码使用 strings.Replac

Pandas-数据操作-字符串型(二):常用方法【lower、upper、len、startswith、endswith、strip、lstrip、replace、split、rsplit】

一、字符串常用方法:lower,upper,len,startswith,endswith import numpy as npimport pandas as pds = pd.Series(['A', 'b', 'bbhello', '123', np.nan])print("s = \n", s)print('-' * 200)print("lower小写: s.str.lower

Pandas-高级处理(三):缺失值处理【isnull:判断是否有缺失数据NaN】【fillna:实现缺失值的填充】【dropna:实现缺失值的删除】【replace:实现数据的替换】

缺失值处理 应用isnull判断是否有缺失数据NaN应用fillna实现缺失值的填充应用dropna实现缺失值的删除应用replace实现数据的替换 1 如何处理nan 获取缺失值的标记方式(NaN或者其他标记方式) 如果缺失值的标记方式是NaN 判断数据中是否包含NaN: pd.isnull(df),pd.notnull(df) 存在缺失值nan: 1、删除存在缺失值的:dr

在 MySQL 中使用 `REPLACE` 函数

在 MySQL 中,REPLACE 函数是一个用于处理字符串的强大工具。它的主要功能是替换字符串中的某些子字符串。REPLACE 函数在数据清理、格式化以及处理文本数据时非常有用。本文将详细介绍 REPLACE 函数的使用方法,包括函数的语法、示例以及实际应用场景。 1. 函数语法 REPLACE 函数的基本语法如下: REPLACE(string, old_substring, new

Erase/Trim/Discard/Sanitize

针对JEDEC协议中几个抹除资料的命令,大家都很容易将其混淆。现在就这四个抹除命令作详细介绍,希望能帮助大家分清各个命令的具体含义及用法。 Erase 1.1擦除组(EraseGroup) Erase翻译过来是抹去、擦除的意思。eMMC中可擦除的单位称为“擦除组”,擦除组是用写入块(writeblocks,Device的基本可写单位)来测量的。擦除组的大小是一个设备特殊参数,当ERASE