將部分非數位文字轉換為數字的MySQL 查詢
在MySQL 中,可以從非數位文字中提取數字部分並將其轉換為數字資料類型以實現正確排序。
考慮包含以下內容的欄位的情況以「名稱-數字」格式組合名稱和數字的識別碼。使用預設字元順序基於此列對行進行排序會導致不期望的順序:
name-1 name-11 name-12 name-2
要解決此問題,您可以使用SUBSTRING_INDEX() 函數從文字中提取數字部分:
SUBSTRING_INDEX(field,'-',-1)
函數會擷取最後一次出現「-」字元之後的子字串,有效隔離數字
接下來,您可以使用CONVERT() 函數將擷取的子字串轉換為無符號整數:
CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
此步驟將字串轉換為數字資料類型,可用於數值比較。
最後,您可以使用ORDER BY 子句根據提取和轉換的數值對行進行排序部分:
ORDER BY num
此查詢應產生所需的排序順序:
name-1 name-2 name-11 name-12
請注意,此方法假設標識符的非數字部分將不包含任何數字。如果不能保證這一點,您可能需要使用更複雜的字串操作技術。
以上是當 ID 包含字母數字文字時,如何對 MySQL 行進行數字排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!