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

Replace data in a column varchar (Oracle SQL)

我正在使用 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。

谢谢

我将向您提供一些 Oracle 提供的通用函数,这应该足以帮助您进一步。查看 Oracle 函数 REPLACE、INSTR、SUBSTR、TRANSLATE。 使用 INSTR,您可以找到一个字符串在另一个字符串中的位置。所以 INSTR( filtre, 15, m, n) returns 第 n 次出现从字符串中位置 m 位置 15 开始。不知道要求是什么,我不确定您是否可以使用简单的 REPLACE 来完成,或者您是否需要更深入地研究并使用像 SUBSTR 这样的函数。请记住,您可以嵌套这些函数,并且可能需要多次嵌套才能获得所需的结果。从现在开始远离正则表达式,先尝试掌握PL/SQL/

中的基本功能

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

我解决了问题

创建 table 临时为

select

叔叔, 登场||

regexp_replace( 替换(替换(替换(鳍,'.20.','.34.'),'.24','.35'),'.26','.36') ,'.(.*).','\1')

结果 从 ( select 好,

regexp_replace(ligne,'(.COLTAB@).','\1')登场,

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

来自 ( select ID cle, filtre ligne From favoris where Type ='Test' ) );

UPDATE favoris f SET f.filtre = (SELECT t.resultat 从临时 t 其中 f.ID = t.cle) 其中类型='Test';

下降 table 温度;