2016-06-28 4 views
0

다음 표가 있습니다. 나는 스파크 SQL 함께 일하고 있어요다른 SQL의 열 하위 문자열

+--------------------+-----+--------+ 
|fardet_cd_fare_basis|part2|  num| 
+--------------------+-----+--------+ 
|   MEO00RIG| 00R|  MEO| 
|   MEO00RIG| RIG| MEO00| 
|   MEO00RIG| I| MEO00RI| 
+--------------------+-----+--------+ 

:하지만,

나는 "fartdet_cd_fare_basis" "2 부"의 모양까지 체인의 첫 번째 부분에서 추출 할 필요가
+--------------------+-----+ 
|fardet_cd_fare_basis|part2|  
+--------------------+-----+ 
|   MEO00RIG| 00R| 
|   MEO00RIG| RIG| 
|   MEO00RIG| I| 
+--------------------+-----+ 

, 예 것 나는 SQL 솔루션을 사용했다. 어떤 아이디어?

+0

예상되는 출력을 다시 제대로 설명 할 수 있습니까? 이해하기 어렵습니다. 샘플 데이터를 출력하는 데 1 행만 필요합니까? 그렇다면 논리는 무엇이며, 그렇지 않다면 무엇이 왜 다른 행의 출력이어야합니다. – Utsav

+0

지금은 더 잘 이해하고 있습니까? – nest

+0

나는 지금 대답했다. 그것이 당신을 위해 일한 경우, 질문을 닫을 수 있도록 대답을 수락하십시오. – Utsav

답변

1

나는 당신이 원하는 것을 이해한다고 생각합니다. 이 시도. LiveDemo

select fardet_cd_fare_basis,part2, 
    substr(
      fardet_cd_fare_basis, 
      1, 
      instr(fardet_cd_fare_basis,part2)-1 
     ) as der_sub 
from your_table 

출력

+----------------------+--------+---------+ 
| fardet_cd_fare_basis | part2 | der_sub | 
+----------------------+--------+---------+ 
| MEO00RIG    | (null) | (null) | 
| MEO00RIG    | O  | ME  | 
| MEO00RIG    | 00R | MEO  | 
| MEO00RIG    | RIG | MEO00 | 
| MEO00RIG    | 00  | MEO  | 
| MEO00RIG    | I  | MEO00R | 
| MEO00RIG    | R  | MEO00 | 
| MEO00RIG    | 00  | MEO  | 
+----------------------+--------+---------+ 

참고 : part2는 첫 번째 열에 존재하지 않는 경우, 당신은 출력에 아무것도 얻을 수 없습니다. 또한 part2이 null이면 null이됩니다. 원하는 경우 별도로 처리 할 수 ​​있습니다.

+0

대단히 고마워요. 가능한 경우이 응답을 실행하는 SQL 스파크 시도합니다. 아무도 그것을하는 방법을 알고 있다면 ... – nest