Oracle替换第一个字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle替换第一个字符相关的知识,希望对你有一定的参考价值。

Oracle字符串中替换第一次匹配的字符,这要怎么写?比如:abcdba, 把第一个b替换为x,结果为:axcdxa

参考技术A select replace(substr('abcdba',0,instr('abcdba','b')),'b','x') ||substr('abcdba',instr('abcdba','b')+1, length('abcdba')) from dual
结果应该是axcdba吧....第一个b替换为x,第二个不变

oracle 批量替换某字段中第一位的值

比如说,某字段值000001 000002 000003 想要把第一位的0批量替换成2

参考技术A UPDATE TABLE_NAME SET COL1 = '2'||SUBSTR(COL1,2,LENGTH(COL1) - 1) 参考技术B 对于这个意思,不知道楼住是想哪一种?
1、不管第一位是什么,直接替换为2;
2、只有当第一位为0的时候,才替换为2;

对于第一种想法的话,可以通过截取字符串,可以用下面的更新语句:
UPDATE 表名 SET 字段名= '2' || substr(字段名,2) WHERE 字段名 IS NOT NULL;

(注意:oracle中的第一个字符的位置为1,第二个的位置为2,因此,上面使用substr(字段名,2),而不像java中,使用1)

对于第二种想法,可以使用正则表达来进行处理,或者是采用下面的方法:
UPDATE 表名 SET 字段名= '2' || substr(字段名,2) WHERE 字段名 IS NOT NULL AND substr(字段名,1,1) = '0';
(经过试验,其中第二种情况下,条件:字段名 IS NOT NULL 可以省略掉)本回答被提问者采纳

以上是关于Oracle替换第一个字符的主要内容,如果未能解决你的问题,请参考以下文章

oracle 批量替换某字段中第一位的值

sql Oracle SQL:返回当前月份第一天的字符串(如果其他月份为ar,则替换SYSDATE的任何日期字段/值

Oracle 正则表达式函数-REGEXP_REPLACE 使用例子

oracle正则表达式截取某个字符前的数字

SQL替换字段最后一个字符和几个字符

sql如何对某个字段做字符替换?