我坚信无法解决这个问题,但我想我还是会问。我的问题正是这个问题:
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'
我可以使用正确的值轻松替换为变量,但我不想求助于构建自己的解析器。有人看到一个很好的方法来做到这一点?谢谢!
答案 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
。