Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengapa Oracle 9i memperlakukan string kosong sebagai NULL?

Saya yakin jawabannya adalah bahwa Oracle sangat, sangat tua.

Kembali di masa lalu sebelum ada standar SQL, Oracle membuat keputusan desain yang mengosongkan string di VARCHAR /VARCHAR2 kolomnya adalah NULL dan bahwa hanya ada satu pengertian NULL (ada teori relasional yang akan membedakan antara data yang tidak pernah diminta, data yang jawabannya ada tetapi tidak diketahui oleh pengguna, data yang tidak ada jawaban, dll. yang merupakan semacam NULL ).

Pada saat standar SQL muncul dan menyetujui bahwa NULL dan string kosong adalah entitas yang berbeda, sudah ada pengguna Oracle yang memiliki kode yang menganggap keduanya setara. Jadi Oracle pada dasarnya dibiarkan dengan opsi untuk memecahkan kode yang ada, melanggar standar SQL, atau memperkenalkan semacam parameter inisialisasi yang akan mengubah fungsionalitas sejumlah besar kueri yang berpotensi. Melanggar standar SQL (IMHO) adalah yang paling tidak mengganggu dari tiga opsi ini.

Oracle telah membuka kemungkinan bahwa VARCHAR tipe data akan berubah di rilis mendatang untuk mematuhi standar SQL (itulah sebabnya semua orang menggunakan VARCHAR2 di Oracle karena perilaku tipe data tersebut dijamin akan tetap sama di masa mendatang).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT dan UPDATE catatan menggunakan kursor di oracle

  2. PLS-00201 pengenal 'PACKAGENAME.PROCEDURENAME' harus dideklarasikan

  3. OracleDataSource vs. Oracle UCP PoolDataSource

  4. ORA-12519 TNS:tidak ditemukan penangan layanan yang sesuai

  5. Bagaimana Cara Memeriksa Tablespace di Oracle SQL Developer?