0

在我的管理界面中,我有一个子域列表,它们遵循以下逻辑:

node-k1
node-k2
node-k3
node-k4
node-k5
node-k6
node-k7
node-k8
node-k9
node-k10
node-k11

这些存储在mysql中。我需要按数字顺序列出它们,但是由于我在 之后缺少前导 0 node-k,因此它对它们进行排序:

node-k1
node-k10
node-k11
node-k2
node-k3
etc

有节点有不同的字母,所以node-j_会出现在前面node-k_ORDER BY node ASC显然可以很好地处理字母,但是数字是一个烦人的问题。

有没有办法让 ORDER BY 子句把它们按正确的顺序排列?这是一个仅限管理员的功能,因此性能并不是真正的问题。

4

2 回答 2

3

如果数字总是从字符 7 开始,那么您可以将其转换为整数,如下所示:

SELECT *
FROM tbl
ORDER BY SUBSTR(subdomain, 1, 6), CAST(SUBSTR(subdomain, 7) AS UNSIGNED)

这首先按前缀排序,然后按数字排序。

于 2012-05-10T04:20:52.387 回答
0

在记录节点的表中,必须有一个数字字段(唯一),它基本上是指节点的顺序。

ID NodeName
1 Node-k1
2 Node-k2
3 Node-k3
4 Node-k10
5 Node-k11

从 table1 中按 ID 顺序选择 Nodename。

瑞安

于 2012-05-10T04:46:46.527 回答