2017-01-15 3 views
-1

나는이 형식에있는 필드가 있습니다제거 문자열

value 1, description 

내가 뭘하려고 오전 킵 만 설명 부분에 의해이 열을 업데이트하고 값을 제거하는 것입니다 (1) .

난 내 분야에서 가지고있는의

예 :

01 : 내가 업데이트 후이 원하는 무엇

1st district, Rockville 
6th district, Gaithersburg/Montgomery Village 

지금은 이것을 사용하지만 두 번째 대신 나에게 첫 부분을 제공합니다 언급 한 바와 같이

SELECT 
    (CASE WHEN INSTR(field, ',') > 0 
     THEN substr(field, 1, instr(field, ',') +1) 
     ELSE myfield 
    END) AS myfield 
FROM 
    mydata 
+0

필드에 쉼표가 두 개 이상이면 어떻게됩니까? – GurV

답변

0

대신 문자열 길이

SELECT 
    (CASE WHEN INSTR(field, ',') > 0 
     THEN substr(field, instr(field, ',') +1) 
     ELSE myfield 
    END) AS myfield 
FROM 
    mydata 

substr 기능의 시작 위치로 comma의 위치를 ​​사용하여 의견에 단순화 될 수 있습니다.

SELECT substr(field, instr(field, ',') +1) AS myfield 
FROM mydata 

update mydata Set field = substr(field, instr(field, ',') +1) 
Where instr(field, ',') > 1 
+0

사례가 필요하지 않습니다. instr은','이 존재하지 않으면 0을 반환 할 것입니다. – GurV

+0

select는 잘 작동합니다. 어떻게 업데이트 명령을 내릴 수 있습니까? – CodeL

+0

@CodeL - 내 게시물 업데이트 –

0

난 당신이 여기 regexp_substr를 사용할 수 있다고 생각합니다 업데이트하십시오. 뭔가 같이 :

substr(regexp_substr(field, ',[^,]+'),2) 
0

당신은 항상 마지막 쉼표 다음 부분을 얻고 싶은 경우에, 당신은이 작업을 수행 할 수 있습니다

SUBSTR + INSTR 사용 :

select 
    trim(substr(field,instr(field,',',-1)+1)) 
from mydata; 

REGEXP_SUBSTR 사용 :

select 
    trim(regexp_substr(field,'[^,]+$')) 
from mydata; 

TRIM은 리던던트를 제거하는 데 사용됩니다 문자열에 공백 문자가 오게됩니다.