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

Има ли по-добър оператор на Oracle, който да направи нулева безопасна проверка на равенството?

Е, не съм сигурен дали това е по-добре , но може да е малко по-кратко да използвате LNNVL , функция (която можете да използвате само в WHERE клауза), която връща TRUE ако даден израз е FALSE или НЕИЗВЕСТНО (NULL ). Например...

WITH T AS
(
    SELECT    1 AS X,    1 AS Y FROM DUAL UNION ALL
    SELECT    1 AS X,    2 AS Y FROM DUAL UNION ALL
    SELECT    1 AS X, NULL AS Y FROM DUAL UNION ALL
    SELECT NULL AS X,    1 AS Y FROM DUAL
)
SELECT
    *
FROM
    T
WHERE
    LNNVL(X <> Y);

...ще върне всички, освен реда, където X =1 и Y =2.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се изведе израз SELECT от PL/SQL блок?

  2. Продължителност на данните в глобална временна таблица?

  3. Oracle Pro*C/OCI инсталационни манипулатори за SIGSEGV/SIGABRT и приятели – защо и как да деактивирате?

  4. Курсорът в процедурата връща повече стойности от заявката

  5. Урок за Oracle sql:Ограничаване на набора от данни