sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan man omskriver ER FORSKELLIG FRA og ER IKKE FORSKELLIG FRA?

IS DISTINCT FROM prædikat blev introduceret som feature T151 i SQL:1999, og dets læsbare negation, IS NOT DISTINCT FROM , blev tilføjet som funktion T152 i SQL:2003. Formålet med disse prædikater er at garantere, at resultatet af sammenligning af to værdier enten er sandt eller False , aldrig Ukendt .

Disse prædikater fungerer med enhver sammenlignelig type (inklusive rækker, arrays og multisæt), hvilket gør det ret kompliceret at efterligne dem nøjagtigt. SQL Server understøtter dog ikke de fleste af disse typer, så vi kan komme ret langt ved at tjekke for null-argumenter/operander:

  • a IS DISTINCT FROM b kan omskrives som:

    ((a <> b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))
    
  • a IS NOT DISTINCT FROM b kan omskrives som:

    (NOT (a <> b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))
    

Dit eget svar er forkert, da det ikke tager FALSE OR NULL i betragtning evalueres til Ukendt . For eksempel, NULL IS DISTINCT FROM NULL skal evalueres til False . Tilsvarende er 1 IS NOT DISTINCT FROM NULL skal evalueres til False . I begge tilfælde giver dine udtryk Ukendt .



  1. (Android) Find stien /Android i internt lager

  2. Oprettelse af en taltabel i MySQL

  3. Hvordan opretter jeg en lagret procedure, der valgfrit vil søge i kolonner?

  4. Om der skal bruges SET NAMES