我想在 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
但是没有分隔符,所以分割功能不起作用。 是否有任何函数可以将字符串更改为数组(或列表)? 谢谢你。
如果您使用的数据库支持正则表达式,则可以使用 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;