sql >> Database >  >> RDS >> Mysql

Wat zijn de verschillen tussen Null, Zero en Blank in SQL?

Nul is een getalswaarde. Het is een definitief met precieze wiskundige eigenschappen. (Je kunt er rekenen op ...)

NULL betekent de afwezigheid van enige waarde. Je kunt er niets mee doen, behalve ervoor testen.

Blanco is slecht gedefinieerd. Het betekent verschillende dingen in verschillende contexten voor verschillende mensen. Bijvoorbeeld:

  • Iemand kan een tekenreekswaarde met een lengte van nul bedoelen:d.w.z. een zonder tekens erin ('' ).
  • Iemand zou een tekenreekswaarde kunnen bedoelen die niet nul is en alleen bestaat uit niet-afdrukbare tekens (SPACE, TAB, enz.). Of misschien bestaande uit slechts een enkel SPACE-teken.
  • In sommige contexten (waar teken en tekenreeks verschillende typen zijn), kan iemand een niet-afdrukbare tekenwaarde bedoelen.
  • Iemand kan zelfs bedoelen "alles dat niet verschijnt wanneer je het afdrukt of weergeeft".

Het punt is dat "leeg" geen enkele goed gedefinieerde betekenis heeft. In ieder geval niet in (native) Engelse IT-terminologie. Het is waarschijnlijk het beste om het te vermijden ... als je wilt dat andere IT-professionals begrijpen wat je bedoelt . (En als iemand anders de term gebruikt en het is niet duidelijk uit de context, vraag hem dan om precies te zeggen wat ze bedoelen!)

We kunnen niets algemeens zeggen over hoe ZERO / NULL / BLANK worden weergegeven, hoeveel geheugen ze in beslag nemen of iets dergelijks. Het enige wat we kunnen zeggen is dat ze verschillend van elkaar worden weergegeven .... en dat de werkelijke weergave implementatie- en contextafhankelijk is .



  1. SQL Server 2008 Verticale gegevens naar Horizontaal

  2. Foreign key-beperkingen tijdens het dumpen van gegevens

  3. hoe gebruik je sql join in mysql

  4. JDBC Oracle - Ophalen plan voor query ophalen