Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да накарате to_number да игнорира нечислови стойности

По принцип в релационните бази данни редът на оценяване не е дефиниран, така че е възможно select функциите се извикват преди where клауза филтрира данните. Знам, че това е случаят в SQL Server. Тук е публикация, която предполага, че същото може да се случи в Oracle.

case операторът обаче прави каскада, така че се оценява по ред. Поради тази причина предпочитам:

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

Това ще върне NULL за стойности, които не са числа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да третираме MAX() на празна таблица като 0 вместо NULL

  2. Разлика между Oracle DATE и TIMESTAMP

  3. Съпоставяне на полето ORACLE TIMESTAMP(9) към java.util.Date

  4. Oracle изпомпва данни impdp към отдалечен сървър

  5. Oracle SQL Connect By Logic