在 PostgreSQL 中将字符串转换为数组的数组

Adr*_*lid 1 sql postgresql

想要“简单地”选择以下string行(注意“它已经是”数组的数组)为其中一种类型float[][]

从:

'[[1.1, 1], [2.2, 2]]'

到:

[[1.1, 1], [2.2, 2]]

有什么建议吗?谢谢!

Lau*_*lbe 6

您只需用大括号替换方括号,就可以得到array 的字符串表示形式,您可以将其转换为所需的数据类型。

SELECT CAST (replace(
                replace(
                   '[[1.1, 1], [2.2, 2]]', '[', '{'
                ), ']', '}'
             ) AS float[]
            );

      replace      
-------------------
 {{1.1,1},{2.2,2}}
(1 row)
Run Code Online (Sandbox Code Playgroud)

阿贝里斯托的版本更简单:

SELECT translate('[[1.1, 1], [2.2, 2]]', '[]', '{}')::float[];
Run Code Online (Sandbox Code Playgroud)

这里::是标准CAST语法的 PostgreSQL 快捷方式。