替换列varchar中的数据(Oracle SQL)

时间:2015-01-29 20:35:30

标签: sql oracle plsql

我正在使用Oracle PL / SQL。我有一个varchar列Filtre,我想更改数据

示例:

Filtre = "User@12.4|Tab@3.15.16.25.12.1.4|Sort@3.4.15.12"

我需要更改Tab@3.15.16.25.12.1.4|之间的值。 作为一个例子,我将15替换为18,将16替换为19。

由于

2 个答案:

答案 0 :(得分:0)

我将为您提供Oracle提供的一些通用功能,这些功能应足以为您提供进一步的帮助。看一下Oracle函数REPLACE,INSTR,SUBSTR,TRANSLATE。 使用INSTR,您可以在另一个字符串中找到字符串的位置。所以INSTR(filtre,15,m,n)返回从你的字符串中的位置m位置15开始的第n个外观。不知道要求是什么,我不确定你是否可以使用简单的REPLACE,或者你需要深入了解并使用SUBSTR等功能。请记住,您可以嵌套这些函数,并且可能需要多次执行以获得所需的结果。我从现在开始远离正则表达式,首先尝试掌握PL / SQL /

中的基本功能

http://www.techonthenet.com/oracle/functions/index.php

答案 1 :(得分:0)

我解决了问题

将表格temp设为

选择

CLE, 出道||

REGEXP_REPLACE( 替换(替换(替换(fin,'。20。','。34。'),'。24','。35'),'。26','。36') , '(。*)。', '\ 1')

resultat 从 ( 选择 我,

regexp_replace(ligne,'(。 COLTAB @)。','\ 1')首次亮相,

regexp_replace(ligne,'(。 COLTAB @)(。)\ |','。\ 2.')fin

这 ( 选择ID cle,filtre ligne来自favoris,其中Type ='Test' ) );

UPDATE favoris f SET f.filtre =(SELECT t.resultat                                   从临时来看                                   在哪里f.ID = t.cle)      其中Type ='Test';

drop table temp;