sql >> Databasteknik >  >> RDS >> Oracle

Visar inte SQL noll-värden på en "not equals"-fråga?

På flera språk hanteras NULL olika:De flesta känner till tvåvärdslogik där true och false är de enda jämförbara värdena i booleska uttryck (even is false definieras som 0 och sant som allt annat).

I Standard SQL måste du tänka på logik med tre värden. NULL behandlas inte som ett verkligt värde, man kan snarare kalla det "okänt". Så om värdet är okänt är det inte klart om state i ditt fall är 0, 1 eller något annat. Så NULL != 1 resultat till NULL igen.

Detta drar slutsatsen att varhelst du filtrerar något som kan vara NULL, måste du behandla NULL-värden själv. Observera att syntaxen också är annorlunda:NULL-värden kan endast jämföras med x IS NULL istället för x = NULL . Se Wikipedia för en sanningstabell som visar resultaten av logiska operationer.



  1. Implementera en Multi-Datacenter Setup för PostgreSQL - Del två

  2. rätt syntax att använda nära '?'

  3. Genererar sql insert i för Oracle

  4. 40 frågor du måste veta om R12.2