You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

解决方法

问题分析

你手里的数组是包含单个带末尾逗号的字符串的数组(比如ARRAY['1,2,3,']),直接用string_to_array会得到带空字符串的数组(['1','2','3','']),转整数时会报错,而且你没先取出数组里的字符串做预处理。

具体实现

以下是几种可行的SQL写法:

方法1:先清理末尾逗号再拆分聚合

-- 假设你的数组变量/列名为input_arr
SELECT array_agg(elem::INT) AS int_array
FROM (
    -- 取出数组中的字符串,清理末尾的逗号
    SELECT trim(trailing ',' FROM unnest(input_arr)) AS cleaned_str
) t,
-- 拆分清理后的字符串
unnest(string_to_array(t.cleaned_str, ',')) AS elem

方法2:用正则拆分自动忽略空值

如果字符串里可能有空格或多余逗号,用正则拆分更稳妥:

SELECT array_agg(elem::INT) AS int_array
FROM unnest(ARRAY['1,2,3,']) AS str,
-- 用正则匹配逗号(可带空格)拆分,自动过滤空内容
unnest(regexp_split_to_array(str, '\s*,\s*')) AS elem
WHERE elem <> ''

方法3:处理单个字符串的简化写法

如果是直接处理单个字符串(比如'1,2,3,')而非数组,可以这样写:

SELECT array_agg(elem::INT)
FROM unnest(string_to_array(trim(trailing ',' FROM '1,2,3,'), ',')) AS elem

关键步骤说明

  1. unnest(input_arr):把数组中的单个字符串提取出来;
  2. trim(trailing ',' FROM ...):去掉字符串末尾多余的逗号;
  3. string_to_array/regexp_split_to_array:把字符串拆分为单个数字字符串的数组;
  4. array_agg(elem::INT):把拆分后的字符串转成整数,再聚合为整数数组。

内容的提问来源于stack exchange,提问作者Klaus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:12:08