2016-06-28 25 views
0

我有下表。來自另一個SQL列的子字符串

+--------------------+-----+ 
|fardet_cd_fare_basis|part2|  
+--------------------+-----+ 
|   MEO00RIG| 00R| 
|   MEO00RIG| RIG| 
|   MEO00RIG| I| 
+--------------------+-----+ 

我需要從「fartdet_cd_fare_basis」鏈條的第一部分,直到「第2部分」的外觀提取,一個例子是:

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

我與星火SQL工作,但我使用了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。如果你願意,你可以單獨處理它們。

+0

非常感謝。如果可能的話,我會嘗試執行這個響應sql spark。如果有人知道如何去做... – nest

相關問題