在SQL Server 中對具有數值的VARCHAR 欄位進行排序
當處理可能同時包含數字和字母的VARCHAR 欄位時,排序呈現如果您希望數值按數字順序排列,請挑戰。預設情況下,SQL Server 會按字母順序對此類列進行排序,這在這種情況下是不可取的。
為了實現所需的排序行為,解決方案涉及用字元填充數值以確保所有字串具有相同的長度。這允許 SQL Server 以數字方式對資料進行排序。
以下是示範此方法的範例查詢:
select MyColumn from MyTable order by case IsNumeric(MyColumn) when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn else MyColumn end
在此查詢中,IsNumeric 函數用於確定值是否為數字。如果是,則 Replicate 函數會新增前導零以將字串填入固定長度(本例中為 100)。否則,該值將保持不變。
透過此表達式排序,數字值將被填入並按數字順序排序,而非數字值將按字母順序排序。這確保了所需的排序順序,如原始問題中的範例所示:
1 2 10 A B B1
以上是如何在 SQL Server 中對具有混合數字和字母值的 VARCHAR 資料列進行數字排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!