sql >> Databasteknik >  >> RDS >> Mysql

Vad är skillnaderna mellan Null, Zero och Blank i SQL?

Noll är ett talvärde. Det är en bestämd med exakta matematiska egenskaper. (Du kan göra aritmetik på det ...)

NULL betyder frånvaron av något värde. Du kan inte göra något med den förutom att testa den.

Blank är dåligt definierat. Det betyder olika saker i olika sammanhang för olika människor. Till exempel:

  • Någon kan mena ett strängvärde på noll:det vill säga ett utan tecken ('' ).
  • Någon kan mena ett strängvärde som inte är lika med noll som endast består av tecken som inte kan skrivas ut (MELLANSLAG, TAB, etc). Eller kanske består av bara ett enda MELLANSLAG tecken.
  • I vissa sammanhang (där tecken och sträng är olika typer) kan någon mena ett teckenvärde som inte skrivs ut.
  • Någon kan till och med mena "allt som inte visas när du skriver ut eller visar det".

Poängen är att "blank" inte har en enda väldefinierad betydelse. Åtminstone inte i (infödd) engelsk IT-terminologi. Det är förmodligen bäst att undvika det ... om du vill att andra IT-proffs ska förstå vad du menar . (Och om någon annan använder termen och det inte framgår av sammanhanget, be dem att säga exakt vad de betyder!)

Vi kan inte säga något generellt meningsfullt om hur ZERO / NULL / BLANK representeras, hur mycket minne de upptar eller något liknande. Allt vi kan säga är att de representeras olika för varandra .... och att den faktiska representationen är implementerings- och kontextberoende .



  1. Varför kan PL/pgSQL-funktioner ha bieffekter, medan SQL-funktioner inte kan?

  2. Hur infogar man flera rader i en mysql-databas samtidigt med förberedda uttalanden?

  3. mysql count dubbletter

  4. Topp 10 metoder för att förbättra ETL-prestanda med SSIS