Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dlaczego Oracle 9i traktuje pusty ciąg jako NULL?

Uważam, że odpowiedź brzmi:Oracle jest bardzo, bardzo stary.

W dawnych czasach, zanim pojawił się standard SQL, Oracle podjął decyzję projektową, że puste ciągi w VARCHAR /VARCHAR2 kolumny były NULL i że istniało tylko jedno poczucie NULL (istnieją teoretycy relacyjni, którzy rozróżnialiby dane, o które nigdy nie pytano, dane, na które odpowiedź istnieje, ale nie są znane użytkownikowi, dane, na które nie ma odpowiedzi, itd. które stanowią pewien sens NULL ).

Zanim pojawił się standard SQL i uzgodniono, że NULL a pusty ciąg był odrębnymi jednostkami, byli już użytkownicy Oracle, którzy mieli kod zakładający, że oba są równoważne. Oracle więc w zasadzie pozostało z opcjami złamania istniejącego kodu, złamania standardu SQL lub wprowadzenia pewnego rodzaju parametru inicjującego, który zmieniałby funkcjonalność potencjalnie dużej liczby zapytań. Naruszenie standardu SQL (IMHO) było najmniej uciążliwe z tych trzech opcji.

Oracle pozostawiło otwartą możliwość, że VARCHAR typ danych zmieni się w przyszłej wersji, aby był zgodny ze standardem SQL (dlatego wszyscy używają VARCHAR2 w Oracle, ponieważ zachowanie tego typu danych gwarantuje, że w przyszłości pozostanie takie samo).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak używać ograniczenia sprawdzania w Oracle

  2. Wywołanie procedury składowanej Oracle z parametrem wyjściowym z SQL Server

  3. 2 sposoby łączenia ciągu i liczby w Oracle

  4. Jak utworzyć słaby kursor odniesienia PL/SQL w bazie danych Oracle

  5. Mapowanie NHibernate dla typu danych Oracle INTERVAL DAY TO SECOND