sql >> データベース >  >> RDS >> Mysql

SQL:バイナリからIPアドレス

    mysql> select inet_ntoa(conv('4333d26e', 16, 10));
    +-------------------------------------+
    | inet_ntoa(conv('4333d26e', 16, 10)) |
    +-------------------------------------+
    | 67.51.210.110                       |
    +-------------------------------------+
    1 row in set (0.00 sec)
    

    そこでも機能するかどうかを確認してください=)

    編集

    問題は、inet_ntoa 10進数から解析しているようです strings 16進数ではなく、16進数のintegersからの数値表現 。比較:

    mysql> select inet_ntoa(0x4333d26e);
    +-----------------------+
    | inet_ntoa(0x4333d26e) |
    +-----------------------+
    | 67.51.210.110         |
    +-----------------------+
    1 row in set (0.02 sec)
    
    mysql> select inet_ntoa('0x4333d26e');
    +-------------------------+
    | inet_ntoa('0x4333d26e') |
    +-------------------------+
    | 0.0.0.0                 |
    +-------------------------+
    1 row in set, 1 warning (0.00 sec)
    

    編集

    これはもっと簡単で、うまくいくようです:

    SELECT INET_NTOA(CONV(ip_bin, 2, 10)) FROM log_metadata
    


    1. MySQL:カーディナリティ/選択性の低い列=インデックスを作成する方法

    2. iOSアプリからのMySQLデータベースへのアクセスのみを許可するにはどうすればよいですか? (dbへのゲートウェイとしてwebappを使用)

    3. プロアクティブなSQLServerヘルスチェック、パート5:待機統計

    4. SQL-MySQLデータ(タイムスタンプとステータスメッセージを含む行のセット)からすべてのダウンタイムとダウンタイムの長さを検索します