什么是用于PostgreSQL的SQLAlchemy func.position()的语法?

5
我正在尝试使用position()函数构建SQLAlchemy查询。如何正确地使用它来生成形式为POSITION('@' IN some_column)的SQL语句?
我尝试了func.position('@', MyTable.my_column),但这会生成SQLPOSITION('@', my_table.my_column),而不是使用IN

6
不是答案,但作为一种解决方法,可以使用func.strpos(MyTable.my_column, '@') - Marth
1
谢谢!不知道我怎么会错过这么长时间的strpos()。从来不喜欢有两种方法去做同一件事,但这对我很有效。 - Jim Stewart
这是一个老问题,但如果你把它作为答案发布,@Marth,我会接受。 - Jim Stewart
1个回答

2
关键是将 IN 作为字面量操作应用于子字符串,像这样:
import sqlalchemy as sa

q = sa.select(
    sa.func.position(sa.literal('@').op('IN')(tbl.c.my_column)
)

当编译时,它会生成这个SQL

SELECT position('@' IN tbl.my_column) AS position_1 \nFROM tbl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接