我有一个像["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}
演示