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

Perbedaan antara NVARCHAR di Oracle dan SQL Server?

Ya, jika database Oracle Anda dibuat menggunakan set karakter Unicode, sebuah NVARCHAR di SQL Server harus dimigrasikan ke VARCHAR2 di Oracle. Di Oracle, NVARCHAR tipe data ada untuk memungkinkan aplikasi menyimpan data menggunakan kumpulan karakter Unicode ketika kumpulan karakter database tidak mendukung Unicode.

Satu hal yang harus diperhatikan dalam migrasi, bagaimanapun, adalah semantik panjang karakter. Di SQL Server, sebuah NVARCHAR(20) mengalokasikan ruang untuk 20 karakter yang membutuhkan hingga 40 byte di UCS-2. Di Oracle, secara default, sebuah VARCHAR2(20) mengalokasikan 20 byte penyimpanan. Dalam AL32UTF8 set karakter, yang berpotensi hanya cukup ruang untuk 6 karakter meskipun kemungkinan besar akan menangani lebih banyak (satu karakter di AL32UTF8 membutuhkan antara 1 dan 3 byte. Anda mungkin ingin mendeklarasikan tipe Oracle Anda sebagai VARCHAR2(20 CHAR) yang menunjukkan bahwa Anda ingin mengalokasikan ruang untuk 20 karakter terlepas dari berapa banyak byte yang diperlukan. Itu cenderung jauh lebih mudah untuk dikomunikasikan daripada mencoba menjelaskan mengapa sekitar 20 karakter string diperbolehkan sementara 10 karakter string lainnya ditolak.

Anda dapat mengubah semantik panjang default di tingkat sesi sehingga tabel apa pun yang Anda buat tanpa menentukan semantik panjang apa pun akan menggunakan karakter daripada semantik byte

ALTER SESSION SET nls_length_semantics=CHAR;

Itu memungkinkan Anda menghindari mengetik CHAR setiap kali Anda menentukan kolom baru. Dimungkinkan juga untuk mengaturnya pada tingkat sistem tetapi hal itu tidak disarankan oleh tim NLS-- rupanya, tidak semua skrip yang disediakan Oracle telah diuji secara menyeluruh terhadap basis data di mana NLS_LENGTH_SEMANTICS sudah diganti. Dan mungkin sangat sedikit skrip pihak ketiga.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa Oracle SQL tidak mengizinkan kita menggunakan alias kolom dalam klausa GROUP BY?

  2. Bagaimana Cara Membuat Paket di Oracle SQL Developer?

  3. menggunakan nilai yang dipisahkan koma di dalam klausa IN untuk kolom NUMBER

  4. SQLPlus varchar2 mengeluarkan spasi putih

  5. pernyataan sqlplus dari baris perintah