In dit antwoord zal ik proberen informatie te verstrekken uit officiële bronnen
(1) De N''-tekst Letterlijk
N''
wordt gebruikt om een string te converteren naar NCHAR
of NVARCHAR2
gegevenstype
Volgens deze Oracle-documentatie Oracle - Literals
De syntaxis van letterlijke tekst is als volgt:
waar N
of n
specificeert de letterlijke met behulp van de nationale tekenset (NCHAR
of NVARCHAR2
gegevens).
Ook in dit tweede artikel Oracle - Datatypes
De N'String'
wordt gebruikt om een string te converteren naar NCHAR
gegevenstype
Uit het hierboven genoemde artikel:
Het volgende voorbeeld vergelijkt de translated_description
kolom van de pm.product_descriptions
tabel met een nationale tekenreeksreeks :
SELECT translated_description FROM product_descriptions
WHERE translated_name = N'LCD Monitor 11/PM';
(2) De U'' Letterlijk
U''
wordt gebruikt om de SQL NCHAR String Literals in Oracle Call Interface (OCI) te verwerken
Op basis van deze Oracle-documentatie Programmeren met Unicode
De Oracle-oproepinterface (OCI) is de API op het laagste niveau die de rest van de client-side databasetoegangsproducten gebruiken. Het biedt een flexibele manier voor C/C++-programma's om toegang te krijgen tot Unicode-gegevens die zijn opgeslagen in SQL CHAR
en NCHAR
gegevenstypen. Met OCI kunt u de tekenset (UTF-8, UTF-16 en andere) programmatisch specificeren voor de gegevens die moeten worden ingevoegd of opgehaald. Het heeft toegang tot de database via Oracle Net.
OCI is de API op het laagste niveau voor toegang tot een database, dus het biedt de best mogelijke prestaties.
Omgaan met SQL NCHAR-tekenreeksletters in OCI
U kunt het inschakelen door de omgevingsvariabele ORA_NCHAR_LITERAL_REPLACE
in te stellen naar TRUE
. U kunt dit gedrag ook programmatisch bereiken met behulp van de OCI_NCHAR_LITERAL_REPLACE_ON
en OCI_NCHAR_LITERAL_REPLACE_OFF
modi in OCIEnvCreate()
en OCIEnvNlsCreate()
. Dus bijvoorbeeld OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)
schakelt NCHAR
in letterlijke vervanging, terwijl OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)
schakelt het uit.
[...] Merk op dat, wanneer de NCHAR
letterlijke vervanging is ingeschakeld, OCIStmtPrepare
en OCIStmtPrepare2
zal N'
transformeren letterlijke met U'
letterlijke waarden in de SQL-tekst en sla de resulterende SQL-tekst op in de instructiehandle . Dus als de applicatie OCI_ATTR_STATEMENT
. gebruikt om de SQL-tekst op te halen uit de OCI
instructiehandle, de SQL-tekst retourneert U'
in plaats van N'
zoals gespecificeerd in de originele tekst .
(3) Antwoord op uw vraag
Vanuit het perspectief van datatypes is er geen verschil tussen beide verstrekte zoekopdrachten