В моих данных у меня есть строки, разделенные запятыми.Было бы намного проще, если бы это были массивы, поэтому я могу легко сопоставить их, например, с другим массивом.Тем не менее я не могу создать массив из строки.
Пример кода:
create table tmp_array_string as
select '"abc", "def"' as tmp_string
, array("abc", "def") as tmp_array
select a.*
, array(tmp_string) as not_a_proper_array
, size(tmp_array) as array_size
, size(array(tmp_string) ) not_the_proper_array_size
from tmp_array_string a
Почему массив (tmp_string не приводит к массиву с 2 элементами и есть ли способчтобы сделать эту работу?
Большое спасибо!
После ответа на оставленное соединение, вот доказательство правильности. :-)
select a.*
, array(tmp_string) as not_a_proper_array
, split(regexp_replace(tmp_string,'"',''),',\\s*') as correct_array
, size(tmp_array) as array_size
, size(split(regexp_replace(tmp_string,'"',''),',\\s*')) as correct_size
, size(array(tmp_string) ) not_the_proper_array_size
from tmp_array_string ater code here
правильный размер приводит к 2 :-)