在 presto sql 中将 varchar 转换为数组

问题描述 投票:0回答:1

我想在 varchar 列上获得 jaccard 相似度 有两列带有 varchar(string)

我想更改列值,如下所示 从 apple (varchar) 到 [a,p,p,l,e](数组)

select 
  column
  ,split(column,',') as column_array 
  ,split(column, '') as column_array2 
from sample_table

但是没有分隔符,所以分割功能不起作用。 是否有任何函数可以将字符串更改为数组(或列表)? 谢谢你。

sql arrays string hive presto
1个回答
0
投票

如果您使用的数据库支持正则表达式,则可以使用 regexp_split_to_array 函数将字符串拆分为字符数组。

SELECT
  column,
  regexp_split_to_array(column, '') AS column_array
FROM
  sample_table;

如果不支持正则表达式,则需要使用循环或用户定义的函数。

CREATE OR REPLACE FUNCTION string_to_array_of_chars(input_str VARCHAR)
RETURNS VARCHAR[] AS $$
DECLARE
  char_array VARCHAR[] := '{}';
  i INT;
BEGIN
  FOR i IN 1..LENGTH(input_str) LOOP
    char_array := array_append(char_array, SUBSTRING(input_str FROM i FOR 1));
  END LOOP;
  RETURN char_array;
END;
$$ LANGUAGE plpgsql;

SELECT
  column,
  string_to_array_of_chars(column) AS column_array
FROM
  sample_table;
© www.soinside.com 2019 - 2024. All rights reserved.