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

SQLServerの列で数値以外の値を検索する

    数値以外の値がないか列を確認する必要がある場合があります。たとえば、列がvarcharであることがわかりました。 本当に数値の列である必要がある場合の列。

    これは、SQLServerで ISNUMERIC()を使用して簡単に実行できます。 機能。

    サンプルデータ

    varcharを使用してテーブルを作成するとします。 列に入力し、次のようにデータを挿入します。

    DROP TABLE IF EXISTS t1;
    CREATE TABLE t1 (
        c1 varchar(255)
    );
    
    INSERT INTO t1 (c1) VALUES 
        ('0'),
        ('1'),
        ('+1'),
        ('-1'),
        ('+1'),
        ('00.00'),
        ('73.45'),
        ('+73.45'),
        ('-73.45'),
        ('.246'),
        ('-.34e7'),
        ('12.e-3'),
        ('1.2e+4'),
        ('a'),
        ('9afc'),
        ('e7'),
        ('+e0'),
        ('Ten'),
        ('5 Dollars');
    
    SELECT * FROM t1;

    結果:

    +-----------+
    | c1        |
    |-----------|
    | 0         |
    | 1         |
    | +1        |
    | -1        |
    | +1        |
    | 00.00     |
    | 73.45     |
    | +73.45    |
    | -73.45    |
    | .246      |
    | -.34e7    |
    | 12.e-3    |
    | 1.2e+4    |
    | a         |
    | 9afc      |
    | e7        |
    | +e0       |
    | Ten       |
    | 5 Dollars |
    +-----------+

    上記の値のほとんどは、varcharに含まれていても、数値です。 桁。次の例では、この列で数値以外の値を確認します。

    ISNUMERIC() 機能

    SELECT c1
    FROM t1
    WHERE ISNUMERIC(c1) <> 1;

    結果:

    +-----------+
    | c1        |
    |-----------|
    | a         |
    | 9afc      |
    | e7        |
    | +e0       |
    | Ten       |
    | 5 Dollars |
    +-----------+

    ここでは、 ISNUMERIC()を使用しました Not Equal To(<> )数値ではない値をチェックする演算子。

    列がvarcharであるのには十分な理由があるかもしれません 数値の代わりに。ただし、そうでない場合は、値を同等の数値に変換してから、列のデータ型を数値型に変更する必要があります。これは、データベースのデータ整合性を維持するのに役立ちます。

    数値を含まない値を見つける

    次のクエリを使用して、数値を含まないすべての行を返すことができます。

    SELECT c1
    FROM t1 
    WHERE c1 NOT LIKE '%[0-9]%';

    結果:

    +------+
    | c1   |
    |------|
    | a    |
    | Ten  |
    +------+

    これは前の例とは異なる結果です。これは、含むを含まないすべての値を検索しているだけだからです。 任意の数値データ。前の例では、数値ではない値を探していました。


    1. プランエクスプローラーでプランの詳細をネイティブに匿名化します

    2. MySQLで過去24時間のレコードを取得する方法

    3. HTMLメールに画像を埋め込む

    4. Windows認証を使用してsqlalchemy経由でSQLServerに接続するにはどうすればよいですか?