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

Kolom kueri dengan tipe data char di Oracle

Masalahnya adalah apakah Anda menggunakan char atau varchar2 perbandingan semantik dalam kueri Anda. Jika Anda memiliki string literal hard-coded atau char(10) variabel, Oracle menggunakan char perbandingan semantik yang mengabaikan spasi putih. Jika Anda memiliki varchar2(10) variabel, Oracle menggunakan varchar2 perbandingan semantik yang mencakup spasi tambahan. Jadi

 select aa 
   into v_temp 
   from abc 
  where aa in (v_aa);

akan mengembalikan baris jika v_aa didefinisikan sebagai char(10) (atau jika diganti dengan string literal) tetapi tidak jika didefinisikan sebagai varchar(10) .

Ini adalah salah satu (banyak) alasan mengapa kebanyakan orang menghindari char tipe data sepenuhnya. Secara pribadi, saya tidak keberatan dengan char untuk data dengan lebar yang benar-benar tetap (yaitu char(1) untuk flag dan char(2) untuk kode negara) meskipun tidak ada gunanya menggunakan char lebih dari varchar2 dalam skenario tersebut. Namun, untuk apa pun yang tidak memiliki lebar tetap, gunakan char tidak masuk akal. Anda hanya memaksa Oracle untuk menggunakan lebih banyak ruang daripada yang dibutuhkan dan menciptakan lebih banyak pekerjaan untuk Anda sendiri yang berurusan dengan dua set semantik perbandingan string (di antara masalah lainnya).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. buat fungsi khusus untuk perbedaan tanggal tidak termasuk akhir pekan dan hari libur di Oracle sql

  2. Jumlah Catatan dalam Pernyataan Sisipkan (Oracle)

  3. Arti dari byte dump(systimestamp) Oracle

  4. Bagaimana cara menghitung jumlah kemunculan karakter dalam nilai Oracle varchar?

  5. Dapatkan hasil dari prosedur tersimpan Oracle