2017-03-27 10 views
2

文字の最初と最後の発生との間の抽出文字列「 - 」を、私はの最初と最後の発生との間の文字列を抽出する必要があります「 - 」ハイブ:私はで区切られた文字列があるハイブのテーブルのカラム持っ

+-----------------+ 
    | col1   | 
    +-----------------+ 
    | abc-123-na-00-sf| 
    | 123-abc-01-sd | 
    | 123-abcd-sd  | 
    +-----------------+ 

    Required output: 

    +-----------+ 
    | col1  | 
    +-----------+ 
    | 123-na-00 | 
    | abc-01 | 
    | abcd  | 
    +-----------+ 

希望の出力を抽出する正規表現を提案してください。

これは私のために働いたおかげで

答えて

2
with t as (select explode(array('abc-123-na-00-sf','123-abc-01-sd','123-abcd-sd')) as str) 
select regexp_extract (str,'-(.*)-',1) 
from t 
; 

123-na-00 
abc-01 
abcd 

または

with t as (select explode(array('abc-123-na-00-sf','123-abc-01-sd','123-abcd-sd')) as str) 
select regexp_extract (str,'(?<=-).*(?=-)',0) 
from t 
; 

123-na-00 
abc-01 
abcd 
+0

は...ありがとう –

関連する問題