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

Hvorfor behandler Oracle 9i en tom streng som NULL?

Jeg tror, ​​at svaret er, at Oracle er meget, meget gammelt.

Tilbage i gamle dage, før der var en SQL-standard, tog Oracle designbeslutningen, at tomme strenge i VARCHAR /VARCHAR2 kolonner var NULL og at der kun var én følelse af NULL (der er relationsteoretikere, der vil skelne mellem data, der aldrig er blevet bedt om, data, hvor svaret findes, men ikke er kendt af brugeren, data, hvor der ikke er noget svar, osv. alle som udgør en følelse af NULL ).

På det tidspunkt, hvor SQL-standarden kom omkring og blev enige om, at NULL og den tomme streng var adskilte enheder, der var allerede Oracle-brugere, der havde kode, der antog, at de to var ækvivalente. Så Oracle stod dybest set tilbage med mulighederne for at bryde eksisterende kode, overtræde SQL-standarden eller indføre en slags initialiseringsparameter, der ville ændre funktionaliteten af ​​et potentielt stort antal forespørgsler. At overtræde SQL-standarden (IMHO) var den mindst forstyrrende af disse tre muligheder.

Oracle har ladet muligheden for, at VARCHAR datatypen vil ændre sig i en fremtidig udgivelse for at overholde SQL-standarden (hvilket er grunden til, at alle bruger VARCHAR2 i Oracle, da denne datatypes adfærd garanteret vil forblive den samme fremover).



  1. Identitetslignende kolonne, men baseret på Group By-kriterier

  2. Git-tip og bedste praksis for begyndere

  3. Kom godt i gang med PostgreSQL Streaming Replication

  4. Hvordan kan jeg tilføje nye kolonner til en SQLite-database, efter at Android-appen er frigivet?