在SQL Server 中對具有混合字母數字值的VARCHAR 列進行排序
資料庫表可能包含一個VARCHAR 列,該列可以儲存字母和數字的組合數字。對此列進行排序時,通常需要分隔數值並對其進行自然排序,同時保持非數值欄位的字母順序。
問題:
如何您對SQL Server 中同時包含字母和數字的VARCHAR 欄位排序,使得數字按數字排序,字母按字母排序按字母順序排列?
解決方案:
要實現此目的,您可以使用結合 IsNumeric 函數和 Replicate 函數的方法。 IsNumeric 函數會檢查字串是否為數字,而 Replicate 函數將指定數量的字元加到字串的開頭。
以下是一個範例查詢:
SELECT MyColumn FROM MyTable ORDER BY CASE IsNumeric(MyColumn) WHEN 1 THEN Replicate('0', 100 - Len(MyColumn)) + MyColumn ELSE MyColumn END
在此查詢中,CASE 表達式檢查 MyColumn 欄位中的值是否為數字。如果是,則 Replicate 函數會在字串中新增足夠數量的前導零,以便所有數值具有相同的長度(本例中為 100)。這確保它們按數字排序。
對於非數字值,ELSE 子句僅傳回原始值,保持字母順序。
根據 Replicate 函數調整值 100關於列中數值的最大長度。
以上是如何在 SQL Server 中自然地對具有混合字母數字值的 VARCHAR 資料列進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!