排序用户名

I'l*_*ack 6 mysql sql database

如何正确排序用户名?

例如,我执行此查询:

SELECT * FROM  `members` WHERE username LIKE  'bx%' ORDER BY username ASC 
Run Code Online (Sandbox Code Playgroud)

结果:

bx1
bx10
bx11
bx12
bx13
bx14
bx15
bx16
bx17
bx18
bx19
bx2
bx20
bx21
bx3
bx4
bx5
Run Code Online (Sandbox Code Playgroud)

我想这样回来:

bx1
bx2
bx3
bx4
bx5
...
bx15
bx16
Run Code Online (Sandbox Code Playgroud)

等等

Red*_*ter 11

SELECT *
FROM `members`
WHERE username LIKE 'bx%'
ORDER BY LENGTH(username), username
Run Code Online (Sandbox Code Playgroud)

您需要这样做的事实告诉我您的架构是非规范化的.如果可能,如果需要对其进行操作,请将用户名的整数部分存储在单独的列中.

SQL小提琴示例

  • @Nikola K. OCD多吗?:) (2认同)
  • @NikolaK.看起来像是在向我大吼......像这样的编辑是一场军备战争,对答案贡献不大. (2认同)