如何正确排序用户名?
例如,我执行以下查询:
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诸若此类
发布于 2012-07-23 12:54:27
SELECT *
FROM `members`
WHERE username LIKE 'bx%'
ORDER BY LENGTH(username), username您需要这样做的事实告诉我,您的模式是非规范化的。如果可能,如果需要对用户名进行操作,请将用户名的整数部分存储在单独的列中。
SQL示例
发布于 2012-07-23 13:19:43
您需要创建一个用户定义函数,该函数接受字符串并返回一个展开字符串。假设:字符串只包含一个数字组件,它位于末尾,小于fn中填充的最大整数大小,如ABC1234 -> ABC00001234 ABC34 -> ABC00000034,执行以下步骤
按输出排序,您还可以添加一个计算字段(它使用刚刚创建的函数),该字段将给出返回的值并在其上创建一个索引。
发布于 2012-07-23 12:55:04
SELECT * FROM `members`
WHERE username LIKE 'bx%'
ORDER BY cast(substring(username, 3) as unsigned) ASChttps://stackoverflow.com/questions/11612925
复制相似问题