我可以實現在SQLAlchemy的下面,RIGHT()函數
SELECT * FROM TABLE where right(COULUMN_CODE,2) = 'AX'
這裏RIGHT()
- 返回一個字符串的右側部分,字符
指定數量是否有SQLAlchemy的實現正確的功能?
我可以實現在SQLAlchemy的下面,RIGHT()函數
SELECT * FROM TABLE where right(COULUMN_CODE,2) = 'AX'
這裏RIGHT()
- 返回一個字符串的右側部分,字符
指定數量是否有SQLAlchemy的實現正確的功能?
你會更好使用.endswith()
方法來代替:
select([tabledef]).where(tabledef.c.column_code.endswith('AX'))
,或者用過濾時映射器的配置和會話:
session.query(mappedobject).filter(mappedobject.column_code.endswith('AX'))
的column_code.endswith()
方法將被轉換到任何SQL是最適合您的EN gine,匹配的列值以AX
結尾。
您可以隨時使用function generator創建任意SQL函數,如果你有使用直接RIGHT()
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.funcname
編寫任意函數。 funcname
不必由SQLAlchemy模塊本地定義。 SQLAlchemy知道像min,max等常用函數,如果有方言來表示這些函數之間的差異,SQLAlchemy會爲您提供幫助。
但SQLAlchemy不知道的函數通過,因爲是。所以,你可以創建你的查詢中包含所需RIGHT
功能生成SQL語句,這樣
>>> from sqlalchemy import func
>>> select([table]).where(func.RIGHT(users.c.column_code, 2)='AX')
你的意思是'RIGHT(COLUMN_CODE,2)'應該返回字符串的最後兩個字符嗎? – Bakuriu
是的......但我試圖在條件下使用它 類似的, query.filter(right(coulumn_code,2)=='AX') –