2011-04-13 6 views
0

I PostgreSQL의 데이터의 세트를 가지고substring-with-regex match의 결과를 어떻게 다듬을 수 있습니까?

en_MY_V2_CID_MY_SEM_1_1_0_0 
en_MY_V2_CID_MY_SEM_2_101_1703_0 
en_MY_V2_CID_MY_SEM_2_101_1724_0 
en_MY_CID_MY_DIS_1_100_1705_0068 
en_MY_CID_MY_DIS_1_100_1705_0068 

I는 다음과 같은 문자열 추출 할 :

en_MY_V2_CID_MY_SEM_1 
en_MY_V2_CID_MY_SEM_2 
en_MY_V2_CID_MY_SEM_2 
en_MY_CID_MY_DIS_1 
en_MY_CID_MY_DIS_1 

문제를 좌측 구조 때문에 그럴 수 일정하지 정규식을 사용하여 그들을 파악하십시오. 대신 오른쪽 구조 상수이며 형식은 _numbers_numbers_numbers_numbers입니다.

select substring(name from '_\d+_\d+_\d+$') from logs; 

를 얻을 : 그래서 PostgreSQL을에 사용이 쿼리를 수행하려고

1_0_0 
101_1703_0 
101_1724_0 
100_1705_0068 
1705_0068 

그래서, 어떻게 내가 내 결과를 얻을 부정, 또는 이전의 문자열을 잘라 않는 한 질문?

답변

2

사용 rexep_replace 여전히

select regexp_replace(name,E'\(\\w\)_\\d+_\\d+_\\d+$',E'\\1') from logs; 
+2

또는 단순한'을 선택 REGEXP_REPLACE (이름, E '_ \\ D + _ \\ D + _ \\ D + $', '') 로그에서,' – bart

+0

모두 솔루션 작동, 무리들 감사합니다! – Khairul

관련 문제