gpt4 book ai didi

sql - 有什么方法可以在 PostgreSQL 中的字符串值(如 eval)中执行查询?

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

我想这样做:

SELECT (EVAL 'SELECT 1') + 1;

在 PostgreSQL 中有没有办法像这样 (EVAL)?

最佳答案

如果您尝试“求值”的语句总是返回相同的数据类型,您可以编写一个使用 Grzegorz 提到的 EXECUTE 的 eval() 函数。

create or replace function eval(expression text) returns integer
as
$body$
declare
result integer;
begin
execute expression into result;
return result;
end;
$body$
language plpgsql

然后你可以做类似的事情

SELECT eval('select 41') + 1;

但如果您的动态语句为您要计算的每个表达式返回不同的内容,则此方法将不起作用。

另请记住,这会通过运行任意语句带来巨大的安全风险。如果这是一个问题,则取决于您的环境。如果它仅用于交互式 SQL session ,那么这不是问题。

关于sql - 有什么方法可以在 PostgreSQL 中的字符串值(如 eval)中执行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433201/

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