Dalam jawaban ini saya akan mencoba memberikan informasi dari sumber resmi
(1) Literal teks N''
N''
digunakan untuk mengonversi string menjadi NCHAR
atau NVARCHAR2
tipe data
Menurut dokumentasi Oracle ini Oracle - Literals
Sintaks literal teks adalah sebagai berikut:
dimana
N
ataun
menentukan literal menggunakan set karakter nasional (NCHAR
atauNVARCHAR2
data).
Juga di artikel kedua ini Oracle - Tipe Data
N'String'
digunakan untuk mengonversi string menjadi NCHAR
tipe data
Dari artikel yang tercantum di atas:
Contoh berikut membandingkan
translated_description
kolompm.product_descriptions
tabel dengan string set karakter nasional :SELECT translated_description FROM product_descriptions WHERE translated_name = N'LCD Monitor 11/PM';
(2) The U'' Literal
U''
digunakan untuk menangani SQL NCHAR String Literals di Oracle Call Interface (OCI)
Berdasarkan dokumentasi Oracle ini Pemrograman dengan Unicode
Antarmuka Panggilan Oracle (OCI) adalah API level terendah yang digunakan oleh produk akses database sisi klien lainnya. Ini menyediakan cara yang fleksibel untuk program C/C++ untuk mengakses data Unicode yang disimpan dalam SQL
CHAR
danNCHAR
tipe data. Dengan menggunakan OCI, Anda dapat secara terprogram menentukan set karakter (UTF-8, UTF-16, dan lainnya) untuk data yang akan dimasukkan atau diambil. Ia mengakses database melalui Oracle Net.
OCI adalah API tingkat terendah untuk mengakses database, sehingga menawarkan kinerja terbaik.
Menangani Literal String SQL NCHAR di OCI
Anda dapat mengaktifkannya dengan menyetel variabel lingkungan
ORA_NCHAR_LITERAL_REPLACE
keTRUE
. Anda juga dapat mencapai perilaku ini secara terprogram dengan menggunakanOCI_NCHAR_LITERAL_REPLACE_ON
danOCI_NCHAR_LITERAL_REPLACE_OFF
mode diOCIEnvCreate()
danOCIEnvNlsCreate()
. Jadi, misalnya,OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)
menyalakanNCHAR
penggantian literal, sedangkanOCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)
mematikannya.[...] Perhatikan bahwa, ketika
NCHAR
penggantian literal diaktifkan,OCIStmtPrepare
danOCIStmtPrepare2
akan mengubahN'
literal denganU'
literal dalam teks SQL dan menyimpan teks SQL yang dihasilkan dalam pegangan pernyataan . Jadi, jika aplikasi menggunakanOCI_ATTR_STATEMENT
untuk mengambil teks SQL dariOCI
pegangan pernyataan, teks SQL akan mengembalikanU'
bukannyaN'
sebagaimana ditentukan dalam teks asli .
(3) Jawaban untuk pertanyaan Anda
Dari perspektif tipe data, tidak ada perbedaan antara kedua kueri yang disediakan