我有一個基于輸入列 "lang "的hive werin需求。我在這里尋找語言eng(eng)和french(fra),這個列被分隔符';'分割。 它應該從col1中挑選,并根據語言把它放在col_eng或col_fra中。
例如:語言是bel;fra;eng,它應該從col1中挑選各自的法語和英語值,以';'為界,ABC/WSC;ASA/SAS;ASA/SD即ASA/SAS在col_fra,ASA/SD到col_eng。
我在下面列出了一些情況。我試著用拆分正則運算式并把它放在case陳述句中,但我無法捕捉到所有這些情況。
例如:
case when lang like ('eng;fra%') then split(mnemonic,';') [0] as mnemonic_eng,split(mnemonic,';') [1] as mnemonic_fr
是否有更好的方法來解決這個問題。下面是所有的場景和所需的輸出,請您幫助。
lang col1 col_eng col_fra 1 fra;eng ABC/DEF;EFH/ASD EFH/ASD ABC/DEF 2 eng;fra ABC/DEF;EFH/ASD ABC/DEF EFH/ASD 3 bel;fra;eng ABC/WSC;ASA/SAS; ASA/SD ASA/SD ASA/SAS 4 eng;eng;fra WSX/ASD;WSX/ASD;SEF/DFF WSX/ASD SEF/DFF 5 eng;fra;rus QAZ/WER;AST/RS; ASD/DFG QAZ/WER AST/RS 6 rum;eng AQW/WER;WER/DF WER/DF null 7 rum;fra;eng ABC/WSC;ASA/SAS;ASA/SD ASA/SD ASA/SAS 8 spa;fra ASD/AWE;WER/ERT null WER/ERT 9 eng asd/ert asd/ert null 10 FRA AWE/ERR AWE/ERR 11 fra;eng;rus ;data_eng;dara_rus data_eng null 12 fra;eng data_fra; null data_fra
uj5u.com熱心網友回復:
你可以使用find_in_set計算'eng'和'fra'的位置(以1開始),然后將其應用于split產生的陣列:
select lang, col1,
split(col1,'73')[find_in_set('eng',regexp_replace(lang,'73',','))-1] 作為col_eng。
split(col1,'73')[find_in_set('fra',regexp_replace(lang,'73',','))-1] 作為col_fra
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328057.html
標籤:
上一篇:Microsoft.Data.Sqlite.SqliteExceptionSQLite錯誤1:“AUTOINCREMENT只允許在INTEGERPRIMARYKEY上”
