[英]Python SQLalchemy order_by 1.9 and 1.10 in correct order?
我有一個列version_number
類型TEXT
的表。
值如下所示: 1.9
或1.3
,現在是1.10
問題是,如果我這樣做.order_by(desc("version_number"))
結果是這樣排序的:
1.9
1.3
1.10 # this is handled like 1.1
我需要:
1.10
1.9
1.3
目前我不知道該怎么辦。 我不想更改列類型,甚至不知道它是否有幫助。 我也想保持良好的性能,因為我有 1k 行~用於 eahc 請求,必須訂購。
有任何想法嗎?
編輯
.order_by(desc(func.string_to_array(BuildItems.version_number, '.'))
不起作用。 1.10
還在底部
您需要將text
數組轉換為integer
數組
from sqlalchemy import Integer, cast
from sqlalchemy.dialects.postgresql import ARRAY
.order_by(desc(cast(func.string_to_array(BuildItems.version_number, '.'), ARRAY(Integer))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.