2010-12-02 6 views
0

SQL/Oracle에 익숙하지 않아서 csv 문자열을 구문 분석하고 토큰을 다른 문자열로 바꾸는 쉬운 방법이 있는지 궁금합니다.오라클 구문 분석 및 대체

예를 들어, 내가

을 VALUE3,

PARAM, 값 1, str1과, PARAM 1, 값 2, STR3, PARAM 같은 문자열을 가지고 있고 나는 일정한

와 PARAM 후 값을 대체 할

그래서, 문자열은 사전에

감사 상수

PARAM, 상수, str1과, PARAM, 상수, STR3, PARAM, 될 것입니다. 당신이 (쉼표를 포함하여 인용 값과 같은) 지저분한 아무것도 경우

+1

입니다 당신은 이것을 위해 SQL과 오라클을 사용하고 싶습니까? 간단한 찾기와 교체만으로 충분합니다. 또는 질문이 명확하지 않습니다. – vpit3833

답변

1

그런 다음이 중단됩니다 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); 

을 시도 할 수 있습니다. 정규식은 내 장점이 아니며 일부는 더 나은 일을 할 수 있어야한다고 말했다.

나는 오라클과 같은 RDBMS를 가지고 이상한 방식으로 데이터를 저장하는 것이 매우 좋지 않다는 것을 알고 있다고 생각합니다. convetal table/column 구조체를 사용하지 않을 경우, 객체 관계 기능이나 XML을 사용할 수 있습니다. -이를 위해

0

내가보기 주위에 정규 표현식 패키지를 만들 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 

(? < = PARAM) - 그것은 왜 예견 정규 표현식