sqlalchemy中的RIGHT()函数

2024-10-01 09:26:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以在SQLAlchemy中实现以下功能吗

SELECT * FROM TABLE where right(COULUMN_CODE,2) = 'AX'

这里RIGHT( )-返回具有指定字符数的字符串的右侧部分

是否有正确函数的SQLAlchemy实现?在


Tags: 函数字符串from功能rightsqlalchemytablecode
2条回答

最好使用.endswith()方法:

select([tabledef]).where(tabledef.c.column_code.endswith('AX'))

或者,使用映射器配置和会话进行筛选时:

^{pr2}$

column_code.endswith()方法将被转换为最适合您的特定引擎的SQL,匹配以AX结尾的列值。在

如果直接使用^{cd4>}SQL函数,则始终可以使用function generator创建任意SQL函数:

from sqlalchemy.sql.expression import func

select([tabledef]).where(func.right(tabledef.c.column_code, 2) == 'AX')

并且,func.right()调用将由SQL生成层转换为RIGHT(column_code, 2)。在

文档没有说明清楚,但是您可以使用func.funcnamesytle编写任何函数。funcname不必由SQLAlchemy模块本机定义。SQLAlchemy了解诸如min、max等常见函数,如果这些函数之间存在方言到方言的变化,SQLAlchemy会为您处理这些问题。在

但是SQLAlchemy不知道的函数是按原样传递的。因此,您可以创建一个查询,该查询使用所需的RIGHT函数生成SQL语句,如下所示

>>> from sqlalchemy import func
>>> select([table]).where(func.RIGHT(users.c.column_code, 2)='AX')

相关问题 更多 >