将字符串(看起来像列表)拆分为 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;

您可以使用regexp_replace((替换字符串中的大括号,然后应用拆分

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

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

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

最新更新