在 postgres 中将逗号分隔的整数转换为 int[]

Ben*_*ier 2 arrays postgresql casting

我有以下输入:,1,2,3。我想将其转换为int[]postgres 中的。

以下查询有效:

select string_to_array('1,2,3', ',')::int[]

-- => "string_to_array" => "{1,2,3}"
Run Code Online (Sandbox Code Playgroud)

但这个没有:

select string_to_array(',1,2,3', ',')::int[]

-- => ERROR:  invalid input syntax for integer: ""
Run Code Online (Sandbox Code Playgroud)

这是因为它尝试将''(第一个值)转换为整数。

如何忽略第一个,(或任何额外的,)而不出现错误?

Ben*_*ier 5

使用array_remove的 postgres 9.3+ 解决方案(请参阅删除 pgSQL 中的数组值

select array_remove(string_to_array(',1,2,3', ','), '')::int[];

 -- array_remove
 --------------
 -- {1,2,3}
Run Code Online (Sandbox Code Playgroud)

,这将处理数组中任意数量的散布(例如: 1,2,,3, ,1,,,2,3,...)