【问题标题】:python's eval() in Amazon-Redshift: evaluating strings as expressionsAmazon-Redshift 中的 python eval():将字符串评估为表达式
【发布时间】:2023-04-11 07:40:01
【问题描述】:

我坚信不存在解决此问题的方法,但我想我还是会问。我的问题正是这个:

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

但是对于不支持存储函数的 Amazon Redshift。具体来说,我相信我的表达式都可以用一个或多个表达式来评估为布尔值,例如 'X

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

我可以轻松地将变量替换为正确的值,但我尽量不求助于构建自己的解析器。有人看到这样做的好方法吗?谢谢!

【问题讨论】:

    标签: eval amazon-redshift


    【解决方案1】:

    你很幸运!可以调用 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

    【讨论】:

    • 太棒了!感谢您的提示。
    猜你喜欢
    • 2015-05-28
    • 1970-01-01
    • 2021-10-23
    • 2011-06-03
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多