Amazon-Redshift中的python' eval():将字符串作为表达式

时间:2015-10-01 14:38:16

标签: eval amazon-redshift

我坚信无法解决这个问题,但我想我还是会问。我的问题正是这个问题:

Are there any way to execute a query inside the string value (like eval) in PostgreSQL?

但对于不支持存储功能的Amazon Redshift。具体来说,我相信我的表达式都可以被评估为具有一个或多个表达式的布尔值,例如< X< = 10'与AND和OR连接,即:

string = 'X <= 10 AND Y = 5 AND Z >= 0'

我可以使用正确的值轻松替换为变量,但我不想求助于构建自己的解析器。有人看到一个很好的方法来做到这一点?谢谢!

1 个答案:

答案 0 :(得分:0)

你很幸运!可以调用Python代码的Amazon Redshift recently introduced User Defined Functions

因此,您可以利用Python eval()命令来评估条件。

以下是一些对我有用的代码:

CREATE FUNCTION f_eval(condition TEXT)
RETURNS boolean
VOLATILE AS $$
return eval(condition)
$$ LANGUAGE plpythonu;

然后用:

运行它
SELECT f_eval('5 < 6 and 3 < 4');

这将在SQL中返回true