sql >> Database teknologi >  >> RDS >> Oracle

ORACLE - Vælg Tæl på en underforespørgsel

Du kan teste hver kolonne med et regulært udtryk for at afgøre, om det er et gyldigt tal:

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*)?$' );

Et andet alternativ er at bruge en brugerdefineret funktion:

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;
/

Så kan du gøre:

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


  1. Hvordan opgraderer man PostgreSQL fra version 9.6 til version 10.1 uden at miste data?

  2. Ikke flere data at læse fra stikkontakten

  3. Søg efter "hele ord match" med SQL Server LIKE-mønster

  4. Sådan fungerer DAYOFYEAR() i MariaDB