sql >> Database teknologi >  >> RDS >> Oracle

Viser SQL ikke null-værdier på en ikke-lig-forespørgsel?

På flere sprog håndteres NULL forskelligt:​​De fleste kender til logik med to værdier, hvor true og false er de eneste sammenlignelige værdier i booleske udtryk (selv er falsk er defineret som 0 og sand som alt andet).

I Standard SQL skal du tænke på logik med tre værdier. NULL behandles ikke som en reel værdi, man kan hellere kalde det "ukendt". Så hvis værdien er ukendt, er det ikke klart, om state i dit tilfælde er 0, 1 eller noget andet. Så NULL != 1 resultater til NULL igen.

Dette konkluderer, at uanset hvor du filtrerer noget, der kan være NULL, skal du selv behandle NULL-værdier. Bemærk, at syntaksen også er anderledes:NULL-værdier kan kun sammenlignes med x IS NULL i stedet for x = NULL . Se Wikipedia for en sandhedstabel, der viser resultaterne af logiske operationer.



  1. Hvordan gør man, at en udvidelse ikke kan flyttes?

  2. oci_connect forbindelse mislykkedes

  3. Forebyggelse af SQL-injektionsangreb med Python

  4. NULL-kompleksiteter – Del 3, Manglende standardfunktioner og T-SQL-alternativer