0

私の管理インターフェースには、次のロジックに従うサブドメインのリストがあります。

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 句で正しい順序にする方法はありますか? これは管理者専用の機能であるため、パフォーマンスは実際には問題になりません。

4

2 に答える 2

3

If the number always starts at character 7, then you can cast it to an integer like this:

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

This orders them first by the prefix, then by the number.

于 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 に答える