我们有一个Hive表列,其中的字符串用';'分隔并且我们需要在第二次出现';'
之后提取字符串+-----------------+
| col1 |
+-----------------+
| a;b;c;d |
| e;f; ;h |
| i;j;k;l |
+-----------------+
Required output:
+-----------+
| col1 |
+-----------+
| c |
| <null> |
| k |
+-----------+
选择regexp_extract
答案 0 :(得分:0)
在;
上分割字符串,这将返回一个值数组,从中可以得到索引2的元素。
select split(str,';')[2]
from tbl
答案 1 :(得分:0)
如果您希望像示例中那样将空字符串和仅空格字符串转换为NULL,则此宏可能会有用:
create temporary macro empty_to_null(s string) case when trim(s)!='' then s end;
select empty_to_null(split(col1,'\\;')[2]);