PostgreSQL:如何将传入参数转为数组适配UNNEST函数?
解决UNNEST函数参数类型不匹配的问题
- 方法1:传入标准数组格式参数
在DBeaver的参数配置弹窗中,将vals的参数值写成PostgreSQL数组格式:
'{val1, val2}'
同时指定参数类型为text[](对应字符串数组,若为其他类型替换成对应数组类型),原查询语句保持不变:
select UNNEST(:vals)
- 方法2:将字符串参数转换为数组后再处理
如果无法修改参数输入格式,可通过string_to_array函数把逗号分隔的字符串转成数组:
-- 假设参数是不带单引号的逗号分隔字符串 'val1,val2' select UNNEST(string_to_array(:vals, ','))
如果参数是带单引号的'val1','val2'格式,先清理多余单引号再拆分:
select UNNEST(string_to_array(trim(:vals, ''''), ''','''))
- 方法3:利用DBeaver的数组参数输入功能
DBeaver支持可视化输入数组参数:点击参数输入框旁的数组图标,逐个添加元素,工具会自动将参数封装为数组类型,无需手动编写数组语法。
内容的提问来源于stack exchange,提问作者Ali Khaddour
相关产品推荐
相关产品推荐

