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

Mendefinisikan Set Karakter untuk kolom Untuk tabel database oracle

Jawaban sederhananya adalah, tidak seperti MySQL, kumpulan karakter tidak dapat didefinisikan di tingkat kolom (atau tabel) . Latin1 juga bukan kumpulan karakter Oracle yang valid.

Kumpulan karakter konsisten di seluruh database dan akan ditentukan saat Anda membuat database. Anda dapat menemukan karakter Anda dengan menanyakan NLS_DATABASE_PARAMETERS ,

select value
  from nls_database_parameters
 where parameter = 'NLS_CHARACTERSET'

Daftar lengkap kemungkinan rangkaian karakter tersedia untuk 11g r2 dan untuk 9i atau Anda dapat menanyakan V$NLS_VALID_VALUES .

Dimungkinkan untuk menggunakan ALTER SESSION pernyataan untuk menyetel NLS_LANGUAGE atau NLS_TERRITORY , tetapi sayangnya Anda tidak dapat melakukan ini untuk set karakter. Saya yakin ini karena mengubah bahasa akan mengubah cara Oracle menampilkan data yang disimpan sedangkan mengubah set karakter akan mengubah cara Oracle menyimpan datanya.

Saat menampilkan data, tentu saja Anda dapat menentukan set karakter yang diperlukan di klien mana pun yang Anda gunakan.

Migrasi kumpulan karakter bukanlah tugas yang sepele dan tidak boleh dilakukan dengan enteng.

Sedikit catatan mengapa Anda mencoba menggunakan Latin 1? Akan lebih normal untuk menyiapkan database baru dalam sesuatu seperti UTF-8 (atau dikenal sebagai AL32UTF8 - jangan gunakan UTF8 ) atau UTF-16 sehingga Anda dapat menyimpan data multi-byte secara efektif. Bahkan jika Anda tidak membutuhkannya sekarang, sebaiknya Anda mencoba - tanpa jaminan seumur hidup - untuk membuktikan database Anda di masa mendatang tanpa perlu bermigrasi di masa mendatang.

Jika Anda ingin menentukan set karakter yang berbeda untuk kolom yang berbeda dalam database, maka opsi yang lebih baik adalah menentukan apakah persyaratan ini benar-benar diperlukan dan mencoba menghapusnya. Jika benar-benar diperlukan maka taruhan terbaik Anda mungkin menggunakan set karakter yang merupakan superset dari semua set karakter potensial. Kemudian, miliki semacam batasan pemeriksaan yang membatasi kolom ke nilai heksagonal tertentu. Saya tidak akan merekomendasikan melakukan ini sama sekali, potensi kesalahan untuk masuk sangat besar dan sangat kompleks. Selanjutnya, set karakter yang berbeda membuat nilai hex yang berbeda secara berbeda. Ini, pada gilirannya, berarti bahwa Anda perlu memaksakan bahwa kolom dirender dalam karakter tertentu, yang tidak mungkin karena berada di luar cakupan database.

1. Saya tertarik untuk mengetahui situasinya




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Partisi Oracle berdasarkan ID dan subpartisi berdasarkan DATE dengan interval

  2. Bagaimana cara mendapatkan nilai dummy untuk tag kosong XML dalam tabel menggunakan Oracle?

  3. ResultSet.getString() pada kolom VARCHAR2 mengembalikan string kosong

  4. Otomatiskan sebagian besar kueri pembaruan di pl\sql

  5. Pulihkan tablespace PENGGUNA tidak berfungsi. Pencadangan Oracle