`

oracle trim函数与字符串替换的内存实现简单猜测

 
阅读更多

群里讨论问题说,需要将某个字符串例如 "0100100100000” 转换成"0122122100000"的形式,也就是首尾的0不变,中间的0换成2。

有大牛思路为第一个1到最后一个1之间的0直接replace,如下:

SELECT

SUBSTR('0100100100000',1,INSTR('0100100100000', '1', 1, 1))||
REPLACE(SUBSTR('0100100100000',INSTR('0100100100000', '1', 1, 1)-1,INSTR('0100100100000', '1', -1, 1)-INSTR('0100100100000', '1', 1, 1)),'0','2')
|| SUBSTR('0100100100000',INSTR('0100100100000', '1', -1, 1))
FROM DUAL;

我的是思路是先去掉首尾的0,replace后再和原来的字符串进行替换,这样可以保持更好的通用性,当然效率比较低。ltrim和rtrim的实现方法如下:

select
replace(
'0100100100000',
rtrim(ltrim('0100100100000','0'),'0'),
replace(rtrim(ltrim('0100100100000','0'),'0'),'0','2'))
from dual;

在查文档时发现trim的参数trim_character【单个字符替换,前或者后】也可以完成,只能感慨自己基础不牢,有空得好好看完书了,好比当初学破解一样,当你API都不了解清楚的时候,别人编程到底会怎么写,自己心里是没底的,这样的破解肯定事倍功半。

在内存中,模拟一个字符串"010",现在需要把1替换为2,那么过程不外乎为:

1,

假设 有[50001111]="010"

拆散成 ASCII [UNICODE] 得到:

40000001 30

40000002 31

40000003 30

2,循环字符串长度(3)次,开始比较,当前字符值是否和待替换的字符一致,是则替换掉,不是则继续下一个字符的判断

3,替换完成,组合成新字串

以上全部是猜测,仅此记录。至于更高级的trim,ltrim等方式,则是该替换方式的高级封装罢了。

另不知道如何动态调试ORACLE的语句成反汇编形式,俺恨虚拟码 :(

分享到:
评论

相关推荐

    oracle字符串替换

    本文将详细介绍如何利用`REGEXP_REPLACE`函数来实现字符串替换功能,特别是在复杂的字符串模式匹配与替换方面。 #### 1. REGEXP_REPLACE函数简介 `REGEXP_REPLACE`函数是Oracle提供的一个强大的工具,用于基于正则...

    ORACLE字符串函数

    ORACLE 字符串函数是一组用于操作和处理字符串的函数,包括连接、截取、转换、查找、替换、去除空白等操作。 1. 字符串连接函数:`string || string` 该函数用于连接两个字符串,结果是一个新的字符串。例如,`'...

    常用oracle字符串操作函数

    这个函数用于替换字符串中的某个子串。例如,`REPLACE('hello world', 'world', 'universe')` 返回 'hello universe'。 6. **TRIM()** 函数: TRIM() 用于删除字符串开头、结尾或两端的指定字符。例如,`TRIM(' ...

    Oracle字符串处理函数

    TRIM函数用于移除字符串两端的空白字符或其他指定字符。参数包括:要移除的字符和目标字符串。例如: ``` SQL> select trim(' ' from ' gao qian jing ') from dual; TRIM ------------- gao qian jing ``` 这里...

    Oracle数据库中单行字符串函数简介

    Oracle数据库中的单行字符串函数是处理和操作字符串数据的...了解并熟练掌握这些单行字符串函数对于在Oracle数据库中进行数据操作和查询至关重要,它们可以帮助开发者高效地处理字符串数据,实现复杂的文本处理需求。

    Oracle常用字符串处理函数

    ### Oracle常用字符串处理函数 在Oracle数据库中,字符串处理函数是非常重要的工具,它们可以帮助我们高效地管理和操作数据。本文将详细介绍几种常用的字符串处理函数及其应用方法。 #### 1. LTRIM 和 RTRIM ...

    oracle函数大全 oracle函数大全

    14. TRIM函数:TRIM函数可以剪掉字符串两侧的指定字符。LEADING修剪前导字符,TRAILING修剪尾随字符。如TRIM('s' FROM 'string')会删除所有前导和尾随的's'。 除了上述函数,Oracle还提供其他很多函数,如TO_DATE...

    ORACLE常用数值函数、转换函数、字符串函数

    TRIM函数用于去除字符串c1前导(LEADING)、尾部(TRAILING)或两者(BOTH)的指定字符c2。如果未指定c2,则默认移除空白字符。 这些函数在处理数据时非常实用,能够满足多种场景的需求。对于其他不常用的函数,...

    Oracle 函数大全[字符串函数,数学函数,日期函数]

    ### Oracle 函数大全:字符串函数、数学函数与日期函数详解 #### 一、字符串函数 在Oracle数据库中,字符串函数是一类非常实用的功能,用于处理和操作文本数据。以下是一些常用的字符串函数及其具体用途: ##### ...

    oracle中的trim函数使用介绍

    Oracle中的TRIM函数是数据库操作中处理字符串时非常实用的一个函数,主要用来移除字符串两端或其中一侧的特定字符,通常用于去除空格。本文将详细介绍Oracle TRIM函数的使用方法,帮助你更好地理解和运用这一功能。 ...

    oracle内置函数大全

    12. REPLACE函数:REPLACE函数将字符串中的某个子串替换为另一个子串。如REPLACE('he love you', 'he', 'i')返回'i love you'。 13. SOUNDEX函数:SOUNDEX返回一个表示字符串读音的编码,可用于查找发音相似的单词...

    oracle函数大全

    4. 替换字符串的一部分,例如 REPLACE 函数可以将母字符串中的指定子字符串替换为另一个字符串 5. 删除字符串的空格,例如使用 TRIM 函数去除字符串两端的空格 6. LPAD 和 RPAD 函数用于在字符串的左右两侧填充指定...

    oracle系统函数大全

    Oracle数据库系统包含丰富的内置函数,这些函数用于处理各种数据类型,包括字符串、数值以及日期等。以下是关于Oracle系统函数的一些详细说明,以标题和描述中提到的几个为例: 1. ASCII 函数: ASCII 函数返回一...

    oracle函数

    SOUNDEX 函数返回一个与给定的字符串读音相同的字符串。语法为:SOUNDEX(字符串)。示例代码如下: ```sql CREATE TABLE table1(xm VARCHAR(8)); INSERT INTO table1 VALUES('weather'); INSERT INTO table1 VALUES...

    oracle函数字符处理

    Oracle提供了一系列强大的函数,帮助用户对字符串进行各种操作,如查找、替换、截取、转换等。以下是一些重要的Oracle字符处理函数的详细说明: 1. **SUBSTR()** 函数:用于从字符串中提取子串。例如,`SUBSTR...

    oracle将字符串转为number

    通过本文的学习,我们了解到在Oracle中将字符串转换为Number类型的几种方法,包括使用`TRIM`、`TRANSLATE`、`REGEXP_REPLACE`以及`TO_NUMBER`函数。每种方法都有其适用场景,选择合适的方法能够有效地解决不同类型的...

    80个oracle常用函数总结

    14. TRIM函数:可以剪掉字符串开头(LEADING)或结尾(TRAILING)的指定字符,默认是空格。如TRIM(LEADING ' ' FROM ' gao ')将返回'gao '。 15. ABS函数:返回数值的绝对值。ABS(-100)将返回100。 16. MOD函数:...

Global site tag (gtag.js) - Google Analytics