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