首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlalchemy中的RIGHT()函数

sqlalchemy中的RIGHT()函数
EN

Stack Overflow用户
提问于 2012-11-29 15:50:04
回答 2查看 3.3K关注 0票数 3

我可以在SQLAlchemy中实现以下内容吗?

代码语言:javascript
复制
SELECT * 
FROM TABLE 
WHERE RIGHT(COLUMN_CODE, 2) = 'AX'

在这里,RIGHT( )返回具有指定字符数的字符串的右边部分。

是否有RIGHT函数的SQLAlchemy实现?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-29 16:39:57

您最好改用.endswith()方法:

代码语言:javascript
复制
select([tabledef]).where(tabledef.c.column_code.endswith('AX'))

或者,当使用映射器配置和会话进行过滤时:

代码语言:javascript
复制
session.query(mappedobject).filter(mappedobject.column_code.endswith('AX'))

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

如果必须直接使用SQL函数,则始终可以使用function generator创建任意RIGHT()函数:

代码语言:javascript
复制
from sqlalchemy.sql.expression import func

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

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

票数 6
EN

Stack Overflow用户

发布于 2012-11-29 16:09:04

文档没有明确说明,但是您可以使用func.funcname sytle编写任何函数。funcname不一定要由SQLAlchemy模块原生定义。SQLAlchemy知道一些常见的函数,比如min,max等,如果在这些函数中有方言的变化,SQLAlchemy会帮你处理。

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

代码语言:javascript
复制
>>> from sqlalchemy import func
>>> select([table]).where(func.RIGHT(users.c.column_code, 2)='AX')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13621110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档