2024-10-01 09:26:20 发布
网友
我可以在SQLAlchemy中实现以下功能吗
SELECT * FROM TABLE where right(COULUMN_CODE,2) = 'AX'
这里RIGHT( )-返回具有指定字符数的字符串的右侧部分
RIGHT( )
是否有正确函数的SQLAlchemy实现?在
最好使用.endswith()方法:
.endswith()
select([tabledef]).where(tabledef.c.column_code.endswith('AX'))
或者,使用映射器配置和会话进行筛选时:
column_code.endswith()方法将被转换为最适合您的特定引擎的SQL,匹配以AX结尾的列值。在
column_code.endswith()
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.right()
RIGHT(column_code, 2)
文档没有说明清楚,但是您可以使用func.funcnamesytle编写任何函数。funcname不必由SQLAlchemy模块本机定义。SQLAlchemy了解诸如min、max等常见函数,如果这些函数之间存在方言到方言的变化,SQLAlchemy会为您处理这些问题。在
func.funcname
funcname
但是SQLAlchemy不知道的函数是按原样传递的。因此,您可以创建一个查询,该查询使用所需的RIGHT函数生成SQL语句,如下所示
RIGHT
>>> from sqlalchemy import func >>> select([table]).where(func.RIGHT(users.c.column_code, 2)='AX')
最好使用
.endswith()
方法:或者,使用映射器配置和会话进行筛选时:
^{pr2}$column_code.endswith()
方法将被转换为最适合您的特定引擎的SQL,匹配以AX
结尾的列值。在如果有直接使用^{cd4>}SQL函数,则始终可以使用function generator创建任意SQL函数:
并且,
func.right()
调用将由SQL生成层转换为RIGHT(column_code, 2)
。在文档没有说明清楚,但是您可以使用
func.funcname
sytle编写任何函数。funcname
不必由SQLAlchemy模块本机定义。SQLAlchemy了解诸如min、max等常见函数,如果这些函数之间存在方言到方言的变化,SQLAlchemy会为您处理这些问题。在但是SQLAlchemy不知道的函数是按原样传递的。因此,您可以创建一个查询,该查询使用所需的
RIGHT
函数生成SQL语句,如下所示相关问题 更多 >
编程相关推荐