mysql - 排序用户名

标签 mysql sql database

如何正确排序用户名?

例如我做这个查询:

SELECT * FROM  `members` WHERE username LIKE  'bx%' ORDER BY username ASC 

结果:

bx1
bx10
bx11
bx12
bx13
bx14
bx15
bx16
bx17
bx18
bx19
bx2
bx20
bx21
bx3
bx4
bx5

我想这样返回:

bx1
bx2
bx3
bx4
bx5
...
bx15
bx16

等等

最佳答案

SELECT *
FROM `members`
WHERE username LIKE 'bx%'
ORDER BY LENGTH(username), username

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

SQL Fiddle Example

关于mysql - 排序用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11612925/

相关文章:

mysql - 加速左连接查询

php - 如何知道存储过程是否引发异常?

mongodb - Mgo 如何在嵌套数组中查找嵌套文档?

c# - 是否需要显式事务回滚?

mysql - 在数据库中存储阿拉伯字符的问题

php - MYSQL 查询查找已审查的服务数量

sql - 在 Oracle SQL 中对一段(有时是非连续的)天数进行分组

sql - 查询调优 - 建议

mysql - 在 MYSQL 中出现数字之前,如何获取字符串的前 1 或 2 个字符?

mysql - 如何将数据库中两个表中的连接条目显示为 HTML 表?