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

ORACLE-サブクエリでカウントを選択

    正規表現を使用して各列をテストし、それが有効な数値であるかどうかを判断できます。

    SELECT COUNT(1)
    FROM   table_of_ranges
    WHERE  CASE WHEN REGEXP_LIKE( RangeA, '^-?\d+(\.\d*)?$' )
                THEN TO_NUMBER( RangeA )
                ELSE NULL END
              < 10
    AND    REGEXP_LIKE( RangeB, '^-?\d+(\.\d*)?$' );
    

    もう1つの方法は、ユーザー定義関数を使用することです。

    CREATE OR REPLACE FUNCTION test_Number (
      str VARCHAR2
    ) RETURN NUMBER DETERMINISTIC
    AS
      invalid_number EXCEPTION;
      PRAGMA EXCEPTION_INIT(invalid_number, -6502);
    BEGIN
      RETURN TO_NUMBER( str );
    EXCEPTION
      WHEN invalid_number THEN
        RETURN NULL;
    END test_Number;
    /
    

    次に、次のことができます:

    SELECT COUNT(*)
    FROM   table_of_ranges
    WHERE  test_number( RangeA ) <= 10
    AND    test_number( RangeB ) IS NOT NULL;
    


    1. SQLパフォーマンスチューニングが最も重要なデータベース管理スキルである理由

    2. Ubuntu20.04にArangoDBをインストールする方法

    3. SQL Server 2016:常に暗号化

    4. IS NOT NULL変数が設定されている場合、レコードのテストはTRUEを返しません