sql >> Databáze >  >> RDS >> Oracle

ORACLE - Vyberte počet na dílčím dotazu

Každý sloupec můžete otestovat pomocí regulárního výrazu, abyste zjistili, zda se jedná o platné číslo:

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

Další alternativou je použití uživatelem definované funkce:

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

Pak můžete:

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


  1. Milisekundy v mém DateTime se při uložení na SQL Server změní

  2. Dobrá praxe pro otevírání/uzavření připojení v aplikaci asp.net?

  3. Co NENÍ logický operátor na serveru SQL - SQL Server / Výukový program TSQL část 121

  4. Spustit uloženou proceduru v SQL Developer?