我是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