假設 「空值」 是空值
select fields[0] as Field1
,fields[1] as Field2
,fields[2] as Field3
,fields[3] as Field4
,fields[4] as Field5
from (select split(concat_ws(string(unhex(1)),*),'\\x01') as fields
from mytable
) t
+--------+--------+--------+--------+--------+
| field1 | field2 | field3 | field4 | field5 |
+--------+--------+--------+--------+--------+
| ABC | 45 | XYZ | JKL | BNM |
| 65 | QWE | JKL | (null) | (null) |
| WER | YUI | IOP | GHJ | (null) |
+--------+--------+--------+--------+--------+
簡化版,假設逗號(,
)不會出現在你的領域:
select ...
from (select split(concat_ws(',',*),',') as fields
from mytable
) t
假設 「空值」 是空字符串
select fields[0] as Field1
,fields[1] as Field2
,fields[2] as Field3
,fields[3] as Field4
,fields[4] as Field5
from (select split(regexp_replace(concat_ws(string(unhex(1)),*),'^\\x01+|\\x01+$|(\\x01)+','$1'),'\\x01') as fields
from mytable
) t
+--------+--------+--------+--------+--------+
| field1 | field2 | field3 | field4 | field5 |
+--------+--------+--------+--------+--------+
| ABC | 45 | XYZ | JKL | BNM |
| 65 | QWE | JKL | (null) | (null) |
| WER | YUI | IOP | GHJ | (null) |
+--------+--------+--------+--------+--------+
簡化版,假設逗號(,
)不會出現在你的領域:
select ...
from (select split(regexp_replace(concat_ws(',',*),'^,+|,+$|(,)+','$1'),',') as fields
from mytable
) t
我不不瞭解Hive SQL(或Hive),但如果最終出現在這種情況下,我可能會質疑您的設計首先是重刑。你是如何得到這種稀疏數據的? –
如果您從查詢的select語句中刪除空列數據,則很可能會損壞數據。就像您在JKL中給出的例子是Inut數據中列Field5的值一樣,但是在輸出中,您需要JKL來指定Result4列的值。 –
「空值」是指空字符串還是空值? –