SqlAlchemy:case 语句(case - if - then -else)

Posted

技术标签:

【中文标题】SqlAlchemy:case 语句(case - if - then -else)【英文标题】:SqlAlchemy: case statement (case - if - then -else) 【发布时间】:2011-03-25 09:30:16 【问题描述】:

我想知道是否有办法使用 SqlAlchemy 创建 case 语句,例如postgresql version

如果没有简单的方法,也许文字 SQL 是要走的路?

【问题讨论】:

CASE WHEN with ORM (SQLalchemy)的可能重复 【参考方案1】:

在此处查看有关案例声明的文档:http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.expression.case

【讨论】:

谢谢!我在 google 网站上搜索了 sqlalchemy.org 的“案例”,但这是一个太常见的词。刚刚注意到在 sqlalchemy 网站本身上的搜索会首先显示该页面! 请在您的答案中提供更多链接。【参考方案2】:

来自SQLAlchemy官方doc的参考

from sqlalchemy import case, literal_column

case(
    [
        (
            orderline.c.qty > 100,
            literal_column("'greaterthan100'")
        ),
        (
            orderline.c.qty > 10,
            literal_column("'greaterthan10'")
        )
    ],
    else_=literal_column("'lessthan10'")
)

上面将呈现给定的常量而不使用绑定 结果值的参数(但仍用于比较 值),如:

CASE
    WHEN (orderline.qty > 100) THEN 'greaterthan100'
    WHEN (orderline.qty > 10) THEN 'greaterthan10'
    ELSE 'lessthan10'
END

【讨论】:

以上是关于SqlAlchemy:case 语句(case - if - then -else)的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy:group_concat(case when ...)可能吗?

case语句用法 case语句怎么用

case语句用法

if语句中可以没有case

在C++中if语句和case语句哪一个执行效率更高

switch 语句中当执行完一个case后还能执行另一个case么