gpt4 book ai didi

postgresql - 如何将 CASE 列添加到 SQLAlchemy 输出?

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

到目前为止,我基本上得到了以下内容:

MyTable.query
.join(…)
.filter(…)

过滤器 有一个复杂的不区分大小写的前缀检查:

or_(*[MyTable.name.ilike("{}%".format(prefix)) for prefix in prefixes])

现在我必须检索结果中的匹配前缀。在伪 SQL 中:

SELECT CASE
WHEN strpos(lower(my_table.foo), 'prefix1') = 0 THEN 'prefix1'
WHEN …
END AS prefix
WHERE prefix IS NOT NULL;

SQLAlchemy documentation演示了如何在 WHERE 中使用 CASE,这似乎是一种奇怪的边缘情况,而不是如何使用它来获取基于现有列的新列。

目标是避免在任何地方重复逻辑和前缀名称。

最佳答案

你知道 case 是一个表达式。您可以在 SQL 允许的任何地方使用它,并且您提供的文档链接显示了如何构造 case 表达式。

from sqlalchemy import case, literal
from sqlalchemy.orm import Query

q = Query(case([
(literal(1) == literal(1), True),
], else_ = False))

print(q)

SELECT CASE WHEN (:param_1 = :param_2) THEN :param_3 ELSE :param_4 END AS anon_1

关于postgresql - 如何将 CASE 列添加到 SQLAlchemy 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47276146/

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