В този отговор ще се опитам да предоставя информация от официални ресурси
(1) Текстовият литерал N''
N''
се използва за преобразуване на низ в NCHAR
или NVARCHAR2
тип данни
Според тази документация на Oracle Oracle – Литерали
Синтаксисът на текстовите литерали е както следва:
където
N
илиn
указва литерала, използвайки националния набор от знаци (NCHAR
илиNVARCHAR2
данни).
Също в тази втора статия Oracle – Типове данни
N'String'
се използва за преобразуване на низ в NCHAR
тип данни
От статията, изброена по-горе:
Следващият пример сравнява
translated_description
колона наpm.product_descriptions
таблица сниз за набор от национални знаци :SELECT translated_description FROM product_descriptions WHERE translated_name = N'LCD Monitor 11/PM';
(2) Литерала U''
U''
се използва за обработка на SQL NCHAR низови литерали в Oracle Call Interface (OCI)
Въз основа на тази документация на Oracle Програмиране с Unicode
Интерфейсът за повикване на Oracle (OCI) е API от най-ниско ниво, който използват останалите продукти за достъп до база данни от страна на клиента. Той предоставя гъвкав начин за C/C++ програми за достъп до Unicode данни, съхранявани в SQL
CHAR
иNCHAR
типове данни. С помощта на OCI можете програмно да зададете набора от знаци (UTF-8, UTF-16 и други) за данните, които да бъдат вмъкнати или извлечени. Той осъществява достъп до базата данни чрез Oracle Net.
OCI е API от най-ниско ниво за достъп до база данни, така че предлага най-добрата възможна производителност.
Обработване на SQL NCHAR низови литерали в OCI
Можете да го включите, като зададете променливата на средата
ORA_NCHAR_LITERAL_REPLACE
доTRUE
. Можете също да постигнете това поведение програмно, като използватеOCI_NCHAR_LITERAL_REPLACE_ON
иOCI_NCHAR_LITERAL_REPLACE_OFF
режими вOCIEnvCreate()
иOCIEnvNlsCreate()
. Така, например,OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)
включваNCHAR
буквална замяна, докатоOCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)
го изключва.[...] Имайте предвид, че когато
NCHAR
буквалната замяна е включена,OCIStmtPrepare
иOCIStmtPrepare2
ще трансформираN'
литерали сU'
литерали в SQL текста и съхранявайте получения SQL текст в манипулатор на израза . По този начин, ако приложението използваOCI_ATTR_STATEMENT
за да извлечете SQL текста отOCI
манипулатор на оператор, текстът на SQL ще върнеU'
вместоN'
както е посочено в оригиналния текст .
(3) Отговор на вашия въпрос
От гледна точка на типовете данни, няма разлика между двете предоставени заявки