替换列 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|之间的值。例如,我用 18 替换 15,用 19 替换 16。

谢谢

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

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

我解决了问题

将表临时创建为

选择

克莱,登场||

regexp_replace(replace(replace(replace(fin, '.20.', '.34.'), '.24','.35'), '.26','.36'),'.(.*).','\1')

结果从(选择克莱,

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

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

从(选择 ID cle, filtre ligne from favoris where type ='test'));

UPDATE favoris f SET f.filtre = (SELECT t.resultat 从温度 t 其中 f.ID = t.cle) 其中类型='测试';

下降表温度;

最新更新