将字符串(看起来像list)拆分为Hive中的值列表

时间:2018-10-10 05:48:52

标签: sql hive

我想将看起来像列表的输入字符串分割成逗号分隔的字符串。有没有更好的方法可以做到这一点。下面的SQL不会删除括号。

输入:

"['A','B','C']"

输出:

'A','B','C'

SQL:

SELECT Z.str, 
       SPLIT(Z.str,'\W+') str_new
  FROM (
SELECT "['A','B','C']" str ) Z;

2 个答案:

答案 0 :(得分:0)

您可以使用regexp_replace()替换字符串中的花括号,然后应用split

SELECT Z.str, 
       SPLIT(Z.str,'\W+') str_new
  FROM (
SELECT regexp_replace("['A','B','C']", "\\[\\d*\\]", "")  str ) Z

答案 1 :(得分:0)

对于这样的特殊情况,您可以使用十六进制值。 \ x5b用于“ [”,\ x5d用于“]”。在Hive中,您需要转义\反斜杠。试试这个,对我有用。

> select regexp_replace("['A','B','C']","[\\x5b\\x5d]", "") str ;
+--------------+--+
|     str      |
+--------------+--+
| 'A','B','C'  |
+--------------+--+