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

mysqlから数値データのみを選択する方法は?

    値を正規表現と照合するユーザー定義関数を作成することをお勧めします。

    CREATE FUNCTION IsNumeric (sIn varchar(1024)) RETURNS tinyint 
       RETURN sIn REGEXP '^(-|\\+){0,1}([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$'; 
    

    出典:MySQLフォーラム::MicrosoftSQL Server ::IsNumeric( )MySQLの句?

    真実のテスト:

    mysql> SELECT ISNUMERIC('1');
    +----------------+
    | ISNUMERIC('1') |
    +----------------+
    |              1 |
    +----------------+
    1 row in set (0.01 sec)
    
    mysql> SELECT ISNUMERIC(25);
    +---------------+
    | ISNUMERIC(25) |
    +---------------+
    |             1 |
    +---------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT ISNUMERIC('-100');
    +-----------------+
    | ISNUMERIC(-100) |
    +-----------------+
    |               1 |
    +-----------------+
    1 row in set (0.03 sec)
    
    mysql> SELECT ISNUMERIC('1.5');
    +------------------+
    | ISNUMERIC('1.5') |
    +------------------+
    |                1 |
    +------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT ISNUMERIC('-1.5');
    +-------------------+
    | ISNUMERIC('-1.5') |
    +-------------------+
    |                 1 |
    +-------------------+
    1 row in set (0.02 sec)
    

    偽のテスト:

    mysql> SELECT ISNUMERIC('a');
    +----------------+
    | ISNUMERIC('a') |
    +----------------+
    |              0 |
    +----------------+
    1 row in set (0.02 sec)
    
    mysql> SELECT ISNUMERIC('a1');
    +-----------------+
    | ISNUMERIC('a1') |
    +-----------------+
    |               0 |
    +-----------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT ISNUMERIC('10a');
    +------------------+
    | ISNUMERIC('10a') |
    +------------------+
    |                0 |
    +------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT ISNUMERIC('0.a');
    +------------------+
    | ISNUMERIC('0.a') |
    +------------------+
    |                0 |
    +------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT ISNUMERIC('a.0');
    +------------------+
    | ISNUMERIC('a.0') |
    +------------------+
    |                0 |
    +------------------+
    1 row in set (0.00 sec)
    


    1. Rで分析するためにMySQLで大規模なデータベースを設定する

    2. MySQLデータベース内のテーブルのグループ化

    3. sqlalchemyで警告をオフにします

    4. 最も近い試合、パート2