gpt4 book ai didi

sql - 在postgres动态sql中使用数组作为参数

转载 作者:行者123 更新时间:2023-11-29 13:02:23 25 4
gpt4 key购买 nike

我正在尝试运行这样的动态查询(只是一个想法):

    declare 
params text[] ;
begin
params := ARRAY['30', 'sometext'];
return execute QUERY 'select id, label from "content" where id>$1 and label = $2' using params;
end ;

问题是,我的 params 数组可以有可变长度——我可以准备一个适当的选择查询,但我想使用“using”子句执行它,数组包含所有标有 $ 的参数。

这样的事情是可能的,还是我应该用已经放在语句中的值来构建整个 select 语句(但是,这是我想避免的)。

最佳答案

即使将数组扩展为 USING 的参数列表是可能的(事实并非如此),您第一次想要混合数据类型时会遇到麻烦。

你调查过format(..)吗?与 %L说明符?它不会解决混合类型问题,但除此之外它会起作用。

regress=> SELECT format('SELECT a FROM b WHERE z = %L and x = %L and y = %L', VARIADIC ARRAY[1, 2, 3]::integer[]);
format
-------------------------------------------------------
SELECT a FROM b WHERE z = '1' and x = '2' and y = '3'
(1 row)

虽然值被引用了,但这很好,在 SQL 中用单引号将整数引起来是合法的。

关于sql - 在postgres动态sql中使用数组作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25804976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com