Oracle
 sql >> база данни >  >> RDS >> Oracle

Защо Oracle 9i третира празен низ като NULL?

Вярвам, че отговорът е, че Oracle е много, много стар.

Още в старите дни, преди да има SQL стандарт, Oracle взе решението за проектиране да празни низове в VARCHAR /VARCHAR2 колоните бяха NULL и че е имало само едно усещане за NULL (има теоретици на релациите, които биха направили разлика между данни, които никога не са били подканени, данни, където отговорът съществува, но не е известен от потребителя, данни, където няма отговор и т.н. които представляват някакъв смисъл на NULL ).

По времето, когато се появи стандартът SQL и се съгласи, че NULL и празният низ бяха различни обекти, вече имаше потребители на Oracle, които имаха код, който предполагаше, че двете са еквивалентни. Така че Oracle основно остана с опциите за разбиване на съществуващ код, нарушаване на SQL стандарта или въвеждане на някакъв вид параметър за инициализация, който би променил функционалността на потенциално голям брой заявки. Нарушаването на стандарта SQL (IMHO) беше най-малкото разрушително от тези три опции.

Oracle остави отворена възможността VARCHAR типът данни ще се промени в бъдеща версия, за да се придържа към стандарта SQL (което е причината всички да използват VARCHAR2 в Oracle, тъй като поведението на този тип данни е гарантирано да остане същото занапред).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ръчно възможни PL/SQL недостатъчни привилегии в рамките на заявка

  2. Инсталиране на примерни схеми за Oracle 12c с помощта на помощника за конфигуриране на база данни

  3. Има ли по-добър оператор на Oracle, който да направи нулева безопасна проверка на равенството?

  4. Какъв е минималният клиентски отпечатък, необходим за свързване на C# към база данни на Oracle?

  5. Вземете името на извикващата процедура или функция в Oracle PL/SQL