sql >> Database >  >> RDS >> Oracle

Hoe to_number niet-numerieke waarden te laten negeren

Over het algemeen is in relationele databases de volgorde van evaluatie niet gedefinieerd, dus het is mogelijk dat de select functies worden aangeroepen vóór de where clausule filtert de gegevens. Ik weet dat dit het geval is in SQL Server. Hier is een bericht dat suggereert dat hetzelfde kan gebeuren in Oracle.

De case statement loopt echter in cascade, dus het wordt in volgorde geëvalueerd. Om die reden geef ik de voorkeur aan:

select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
        end)
from ABC;

Dit retourneert NULL voor waarden die geen getallen zijn.



  1. Snelste manier om een ​​groot aantal rijen bij te werken met invoerparameter Lijst<T> in MyBatis naar Oracle db

  2. Welke maat gebruikt u voor varchar(MAX) in uw parameterdeclaratie?

  3. Voeg meerdere ENUM-waarden in PostgreSQL in

  4. MySQL/MariaDB Vault Database Secrets Engine inrichten met Terraform