Python 在sqlalchemy中,是否有一种排序方法,以便空单元格位于末尾,而不考虑排序顺序?
我有一个非常标准的设置,希望按列排序:Python 在sqlalchemy中,是否有一种排序方法,以便空单元格位于末尾,而不考虑排序顺序?,python,sqlalchemy,Python,Sqlalchemy,我有一个非常标准的设置,希望按列排序: someselect.order\u by(asc(table1.mycl)) 但是,我希望mycl的'行或NULL行出现在结果的末尾。有什么方法可以做到这一点吗?在支持NULL LAST的数据库上,您可以通过执行以下操作对NULL进行排序 SELECT * FROM table1 ORDER BY mycol ASC NULLS LAST; 您需要将'转换为NULLs,这样您就可以在数据中或作为查询的一部分执行此操作(我建议您还是这样做): SELEC
someselect.order\u by(asc(table1.mycl))
但是,我希望
mycl
的'
行或NULL
行出现在结果的末尾。有什么方法可以做到这一点吗?在支持NULL LAST
的数据库上,您可以通过执行以下操作对NULL
进行排序
SELECT * FROM table1 ORDER BY mycol ASC NULLS LAST;
您需要将'
转换为NULL
s,这样您就可以在数据中或作为查询的一部分执行此操作(我建议您还是这样做):
SELECT * FROM table1 ORDER BY (CASE mycol WHEN '' THEN NULL ELSE mycol END) ASC NULLS LAST;
或者,也可以使用更便携的方法
SELECT * FROM table1 ORDER BY (CASE WHEN mycol IS NULL OR mycol = '' THEN 1 ELSE 0 END) ASC, mycol;
要在SQLAlchemy中写入此内容:
.order_by(case([(or_(tabel1.mycol.is_(None), table1.mycol == ""), 1)],
else_=0), table1.mycol)
SQLAlchemy有一个
null LAST
修饰符,用于orderby
表达式:
sqlalchemy.sql.expression.nullslast(column)
看
您可以这样使用它:
from sqlalchemy import nullslast
# ...
someselect.order_by(nullslast(table1.mycol.asc()))
还有nullsfirst