一千萬個為什麽

搜索

在mysql中查找最後一個字母數字值

我有一個包含mysql數據庫中的用戶名的字段 例如:

johndoe2
johndoe10
johndoe3

如果我按該字段 DESC 訂購,我會得到:

johndoe3
johndoe2
johndoe10

我需要得到:

johndoe10
johndoe3
johndoe2 

任何幫助贊賞

最佳答案

這是一個巨大的黑客,但我認為會奏效。如果您的列名是s:

order by 
  (replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(s, '0', ''), '1', ''), '2', ''), '3', ''), '4', ''), '5', ''), '6', ''), '7', ''), '8', ''), '9', ''),
  length(s) desc,
  s desc

首先按文本的字母部分排序,將所有相同的名稱組合在一起,然後按長度對它們進行大致數字排序,然後按s進行排序。 s 的最後一個順序現在正常工作,因為它僅用於消除具有相同位數的相同名稱之間的歧義。

轉載註明原文: 在mysql中查找最後一個字母數字值