2012-08-16 65 views
2

使用SQLite3時,我試圖通過將一個TEXT字符串轉換爲INTEGER來排序我的結果。這是我的查詢:將多個小數轉換爲整數的SQL轉換字符串

SELECT id,section FROM contract_sections ORDER BY CAST (section AS int) 

的「部分」列是文本,並且由分級/規範標識符,即1.2.1,其中每個十進制反映在層次結構中的深度另一個層次。我希望按順序返回結果(即1.2.8,1.2.9,1.2.10等)。如果我只是被「部分」列不進行強制轉換命令,我得到的結果,看起來像:

1.1, 1.10, 1.2, ...

但與投上述查詢,這似乎是現在的正確排序,如:

1.1, 1.2, ... 1.9, 1.10

我的問題是,如果我投這個字符串爲int,價值是什麼SQLite將其轉換爲,它將如何訂購?它似乎是按照我現在想要的順序排列,但是想要避免任何未知的錯誤。

回答

1

不同的數據庫處理轉換爲整數和漂浮不同。

在SQL Lite的轉換中,它將看起來像一個整數的字符串的初始段轉換爲整數。因此,cast('1.2.1'爲int)的結果爲整數。

它對於數值表現相似,所以鑄造('1.2.1'爲真實)會導致數值爲1.2

此行爲記錄在此處(http://www.sqlite.org/lang_expr.html)。

在這種情況下,其他數據庫可能會返回錯誤。

+0

謝謝,很好的答覆和感謝指向我相關的文檔。 – bristophocles 2012-08-16 20:01:20