也許這是一個非常幼稚的問題。 我可以以這種方式訂購記錄,以數字開頭的值到記錄的末尾嗎? 例如,這些都在數據庫中的值:sql按名稱排序,數字在末尾
1
Bill
Andrew
在此把與查詢:
Andrew
Bill
1
也許這是一個非常幼稚的問題。 我可以以這種方式訂購記錄,以數字開頭的值到記錄的末尾嗎? 例如,這些都在數據庫中的值:sql按名稱排序,數字在末尾
1
Bill
Andrew
在此把與查詢:
Andrew
Bill
1
沒有,很多人將去年底只有當你將選擇降序排序 - 當字母變成「z..a」。您可能應該執行兩個查詢 - 按字母和數字 - 以及聯合結果。
ORDER BY -ISNUMERIC(a), a
我做了一些類似於此的可能*開始*的數字,但不是完全數字的列:'ORDER BY ISNUMERIC(LEFT(a,1)),a' - 在我的情況下(SQL Server 2000)它正確排序當我離開ISNUMERIC積極的結果。 – 2011-04-26 21:29:22
這會損害性能,因爲每個項目都需要找到需要排序的數字。它可以通過各種方式來完成適當的分類,但所有應用都會遇到性能問題。 – 2012-06-20 14:04:19
一個解決方案可以通過子句中使用您的訂單上兩列 - 不對應於真正的DB列第一位的,但基於一些計算:被什麼東西
像這樣(大多是僞代碼)的東西可能會有所幫助:
select *
from your_table
where ...
order by case when your_column >= '0' and your_column <= '9' then 2 else 1 end,
your_column
通過將確保數字順序的第一部分被置於非後 - 數字;第二部分只是做一個正常的排序。
注:我想可以修改條件來使用函數來確定your_column
是否包含字符串或數字;也許有某種is_number
函數,由您的數據庫系統提供?
什麼類型的系統?如果您使用的是MSSQL Server中的整理技巧,則可以使用一些整潔的技巧。否則,工會會做你所需要的。 – 2012-06-20 14:05:58