如何在SQL中将字符串中的数字数组转换为整数数组



我有一个像["1,2,3,"]的数组。我试图将这个数组内的数字转换为像[1,2,3]这样的纯整数数组。怎么做呢?

我尝试使用string_to_array(cast(('2,3,') as VARCHAR)),但这个函数期望输入是STRING。我试过转换成varchar和文本,但它不工作。

string_to_array使用所提供的分隔符和可选的空字符串将字符串拆分为数组元素。

在您的情况下,我们需要使您的字符串是一个有效的逗号分隔字符串,要做到这一点,我们需要使用REGEXP_REPLACE使其干净:

REGEXP_REPLACE(mycolumn, '["|,?"]', '', 'g')

所以你的查询可以是:

select *, REGEXP_REPLACE(mycolumn, '["|,?"]', '', 'g'), string_to_array(REGEXP_REPLACE(mycolumn, '["|,?"]', '', 'g'), ',')
from mytable;

结果:

mycolumn    regexp_replace  string_to_array
["1,2,3,"]  1,2,3           {1,2,3}
["2,3"]     2,3             {2,3}

演示

最新更新