I det här svaret kommer jag att försöka tillhandahålla information från officiella resurser
(1) N''-texten bokstavlig
N'' används för att konvertera en sträng till NCHAR eller NVARCHAR2 datatyp
Enligt denna Oracle-dokumentation Oracle - Literals
Syntaxen för bokstavliga texter är följande:
där
Nellernanger bokstaven med den nationella teckenuppsättningen (NCHARellerNVARCHAR2data).
Även i denna andra artikel Oracle - Datatyper
N'String' används för att konvertera en sträng till NCHAR datatyp
Från artikeln ovan:
Följande exempel jämför
translated_descriptionkolumnen ipm.product_descriptionstabell med en nationell teckenuppsättningssträng :SELECT translated_description FROM product_descriptions WHERE translated_name = N'LCD Monitor 11/PM';
(2) U'' Literal
U'' används för att hantera SQL NCHAR String Literals i Oracle Call Interface (OCI)
Baserat på denna Oracle-dokumentation Programmering med Unicode
Oracle Call Interface (OCI) är den lägsta nivå API som resten av klientsidans databasåtkomstprodukter använder. Det ger ett flexibelt sätt för C/C++-program att komma åt Unicode-data lagrade i SQL
CHARochNCHARdatatyper. Med OCI kan du programmässigt specificera teckenuppsättningen (UTF-8, UTF-16 och andra) för data som ska infogas eller hämtas. Den får åtkomst till databasen via Oracle Net.
OCI är den lägsta nivån API för att komma åt en databas, så det erbjuder bästa möjliga prestanda.
Hantera SQL NCHAR String Literals i OCI
Du kan slå på den genom att ställa in miljövariabeln
ORA_NCHAR_LITERAL_REPLACEtillTRUE. Du kan också uppnå detta beteende programmatiskt genom att användaOCI_NCHAR_LITERAL_REPLACE_ONochOCI_NCHAR_LITERAL_REPLACE_OFFlägen iOCIEnvCreate()ochOCIEnvNlsCreate(). Så till exempelOCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)aktiverarNCHARbokstavlig ersättning, medanOCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)stänger av den.[...] Observera att när
NCHARbokstavlig ersättning är aktiverad,OCIStmtPrepareochOCIStmtPrepare2omvandlarN'bokstaver medU'bokstaver i SQL-texten och lagra den resulterande SQL-texten i satshandtaget . Således, om applikationen använderOCI_ATTR_STATEMENTför att hämta SQL-texten frånOCIsatshandtag, kommer SQL-texten att returneraU'istället förN'som anges i originaltexten .
(3) Svar på din fråga
Ur datatypsperspektiv är det ingen skillnad mellan de båda frågorna som tillhandahålls
