我是SQL/Oracle新手,想知道是否有简单的方法来解析csv字符串并用另一个字符串替换标记。解析并替换为oracle
例如,我有一个像
PARAM,值1,STR1,PARAM,值2,STR3帕拉姆一个字符串值3
,我想以恒定
帕拉姆后替换值因此,该字符串将成为
PARAM,常量,STR1,PARAM,常量,STR3,PARAM,不断
在此先感谢。
我是SQL/Oracle新手,想知道是否有简单的方法来解析csv字符串并用另一个字符串替换标记。解析并替换为oracle
例如,我有一个像
PARAM,值1,STR1,PARAM,值2,STR3帕拉姆一个字符串值3
,我想以恒定
帕拉姆后替换值因此,该字符串将成为
PARAM,常量,STR1,PARAM,常量,STR3,PARAM,不断
在此先感谢。
您可以尝试REGEXP_REPLACE
select regexp_replace(regexp_replace(regexp_replace(
str,'[^,]*','CONSTANT',1,3),'[^,]*','CONSTANT',1,9),'[^,]*','CONSTANT',1,15)
from
(select 'param,value1,str1,param,value2,str3,param,value3' str from dual);
如果您有任何凌乱的(如引用的值包括逗号),那么这将打破。这说正则表达式不是我的强项,有些人应该能够做得更好。
我假设你知道有一个像Oracle这样的RDBMS并以这种奇怪的方式存储数据是一个非常糟糕的主意。如果您不打算使用传统的表格/列结构,则可以使用对象关系特征或XML。
对于我创建的软件包与环视正则表达式 - 见http://github.com/xtender/XT_REGEXP 例子:
with t as
(select 'param,value1,str1,param,value2,str3,param,value3' str from dual)
select xt_regexp.replace_all(str,'(?<=param,)[^,]*','CONSTANT') from t
(?< =参数) - 这是向前看的正则表达式
为什么你想为此使用SQL和Oracle?简单的查找和替换就足够了。或者,这个问题还不清楚。 – vpit3833 2010-12-02 03:40:39