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

SQLServerで数値のみを返す方法

    SQL Serverでは、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     |
    |--------|
    | 0      |
    | 1      |
    | +1     |
    | -1     |
    | +1     |
    | 00.00  |
    | 73.45  |
    | +73.45 |
    | -73.45 |
    | .246   |
    | -.34e7 |
    | 12.e-3 |
    | 1.2e+4 |
    +--------+

    ここでは、ISNUMERIC()を使用しました Equal To(= )数値の値を返す演算子。この関数は1を返します 数値で0の場合 そうでないとき。

    数値を含む値を見つける

    次のクエリを使用して、数値を含むすべての行を返すことができます(他の文字も含まれている場合でも)。

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

    結果:

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

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


    1. AFTER LOGON(Oracle)は、拡張子が付けられたPostgreSQLでトリガーされます– login_hook

    2. SQLServerのLIKEパターンで「単語全体の一致」を検索する

    3. sqlparameterをIN()に渡す方法は?

    4. IRIWorkbenchでのMicrosoftAccessへの接続