1

同じテーブルにMySQLのIPアドレスがたくさんあります。IPは異なるセグメントです。

このような結果を選択してください。注文の使い方は?

192.168.1.1
192.168.1.2
192.168.1.10
192.168.1.111
192.168.1.23
192.168.1.25
192.168.20.1
192.168.20.31
192.168.20.25
192.168.35.2
192.168.35.21
192.168.35.125

NowMysql_queryではこのようになります。

192.168.1.1
192.168.1.10
192.168.1.111
192.168.1.2
192.168.1.23
192.168.1.25
....
4

2 に答える 2

0

上記の Legendin Making のコメントを参照してください ( order by .... numbers? Help me sort ip addresses )。

Polish Prince の投稿は機能しますが、以前の投稿に基づいて、これをお勧めします。

SELECT ip 
FROM   ips
ORDER BY INET_ATON(ip);

サンプルデータ:

CREATE TABLE ips
    (`ip` varchar(14));

INSERT INTO ips
    (`ip`)
VALUES
    ('192.168.35.2'),
    ('192.168.35.21'),
    ('192.168.1.1'),
    ('192.168.1.2'),
    ('192.168.35.125'),
    ('192.168.1.23'),
    ('192.168.1.25'),
    ('192.168.20.1'),
    ('192.168.20.31'),
    ('192.168.1.10'),
    ('192.168.1.111'),
    ('192.168.20.25');

SQL FIDDLE デモ

これは、Polish Prince の SQL Fiddle と Legendin Making のコメントに基づいていることに注意してください。

于 2013-03-20T16:41:27.100 に答える
0

このようなもの...

SELECT v.ip 
FROM   (SELECT ip, 
               CAST(Substring_index(ip, '.', 1) AS UNSIGNED INTEGER)  first, 
               CAST(Substring_index(Substring_index(ip, '.' 
                   , 2 ), '.', -1) AS UNSIGNED INTEGER)               second, 
               CAST(Substring_index(Substring_index(ip, '.' 
                   , -2 ), '.', 1) AS UNSIGNED INTEGER)               third, 
               CAST(Substring_index(ip, '.', -1) AS UNSIGNED INTEGER) fourth 
        FROM   ips) v 
ORDER  BY v.first, 
          v.second, 
          v.third, 
          v.fourth

デモを見る

于 2013-03-20T15:17:40.680 に答える