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

mysqlでIPアドレスを一致させる方法は?

    REGEXPを使用する必要があります IPアドレスの点線のクワッドパターンに一致させます。

    SELECT *
    FROM yourtable
    WHERE 
      thecolumn REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$'
    

    技術的には、これは999.999.999.999などの有効なIPアドレスではない値と一致します 、しかしそれは重要ではないかもしれません。 とは 重要なのは、IPアドレスがここにある他のデータとは別の独自の列に格納されるようにデータを修正することです。ほとんどの場合、1つの列にデータ型を混在させることはお勧めできません。

    mysql> SELECT '9876543210' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$';
    +---------------------------------------------------------------------------+
    | '9876543210' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$' |
    +---------------------------------------------------------------------------+
    |                                                                         0 |
    +---------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT '987.654.321.0' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$';
    +------------------------------------------------------------------------------+
    | '987.654.321.0' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$' |
    +------------------------------------------------------------------------------+
    |                                                                            1 |
    +------------------------------------------------------------------------------+
    

    もう1つの方法は、MySQLの INET_ATON() 機能 。無効なアドレスはNULLを返します 。

    この方法は、正規表現よりも効率的である可能性があります。

    WHEREに埋め込むことができます 次のような条件:WHERE INET_ATON(thecolumn) IS NOT NULL

    SELECT INET_ATON('127.0.0.1');
    +------------------------+
    | INET_ATON('127.0.0.1') |
    +------------------------+
    |             2130706433 |
    +------------------------+
    
    SELECT INET_ATON('notes');
    +--------------------+
    | INET_ATON('notes') |
    +--------------------+
    |               NULL |
    +--------------------+
    
    SELECT INET_ATON('56.99.9999.44');
    +----------------------------+
    | INET_ATON('56.99.9999.44') |
    +----------------------------+
    |                       NULL |
    +----------------------------+
    


    1. Javaコードを使用してデータベースをエクスポートする

    2. MySQLで月の2つの日付の差を計算する方法

    3. 初心者のためのSQLUPDATE

    4. Java / GWT / MySQL:接続が拒否されましたか?