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