Sql-Server
是否有排序規則按以下順序對以下字元串進行排序 1,2,3,6,10,10A,10B,11?
我有一個包含不同長度整數的 VARCHAR 列的數據庫。我想對它們進行排序,因此 10 在 9 之後,而不是 1,並且 70A 在 70 之後。我可以使用PATINDEX()、 CTE 和 WHERE 子句中的 CASE 語句來做到這一點。
但是,我想知道是否有一個排序規則,這將是不必要的。
不,排序是關於字母排序,取決於程式碼頁、重音、大小寫、寬度、假名。數字字元 (0-9) 沒有任何屬性。
無論如何,
9
總是如此。10B
您必須按照您的說明將其拆分或按如下方式排序:
ORDER BY RIGHT(' ' + MyColumn, 30)
右邊的長度決定了你有多少空格。
你當然可以:
- 有 2 列使這變得不必要(並且更快)並有一個計算列來組合它們
- 堅持前導零
- 在 char 中右對齊(我上面 RIGHT 的儲存版本)
後兩個建議就像我上面的 RIGHT 一樣,略有不同。排序更快(無需處理 colukmn),但需要更多儲存空間