在我的管理界面中,我有一个子域列表,它遵循以下逻辑:
node-k1
node-k2
node-k3
node-k4
node-k5
node-k6
node-k7
node-k8
node-k9
node-k10
node-k11
这些存储在mysql中。我需要按数字顺序列出它们,但是因为我在node-k
之后缺少前导0,所以它会这样命令它们:
node-k1
node-k10
node-k11
node-k2
node-k3
etc
节点有不同的字母,因此node-j_
会显示在node-k_
之前。 ORDER BY node ASC
显然可以正常使用这些字母,但这些数字是个烦人的问题。
有没有办法让ORDER BY子句按正确的顺序排列?这是一个仅限管理员的功能,因此性能不是真正的问题。
答案 0 :(得分:3)
如果数字始终从字符7开始,则可以将其强制转换为如下整数:
SELECT *
FROM tbl
ORDER BY SUBSTR(subdomain, 1, 6), CAST(SUBSTR(subdomain, 7) AS UNSIGNED)
首先按前缀排序,然后按数字排序。
答案 1 :(得分:0)
在您的记录节点的表格中,必须有一个数字字段(唯一),它基本上是指节点的顺序。
ID NodeName
1节点-k1
2节点-k2
3节点-k3
4节点-k10
5节点-k11
按ID从表1中选择Nodename。
RHIAN