この回答では、公式リソースからの情報を提供しようとします
(1)N''テキストリテラル
N''
文字列をNCHAR
に変換するために使用されます またはNVARCHAR2
データ型
このOracleドキュメントによるとOracle-リテラル
テキストリテラルの構文は次のとおりです。
ここで、
N
またはn
国別文字セット(NCHAR
)を使用してリテラルを指定します またはNVARCHAR2
データ)。
この2番目の記事でも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''
Oracle Call Interface(OCI)でSQLNCHAR文字列リテラルを処理するために使用されます
このOracleドキュメントに基づくUnicodeを使用したプログラミング
Oracle Call Interface (OCI)は、残りのクライアント側データベースアクセス製品が使用する最低レベルのAPIです。これは、C /C++プログラムがSQL
CHAR
に格納されているUnicodeデータにアクセスするための柔軟な方法を提供します。 およびNCHAR
データ型。 OCIを使用すると、挿入または取得するデータの文字セット(UTF-8、UTF-16など)をプログラムで指定できます。 OracleNetを介してデータベースにアクセスします。
OCIは、データベースにアクセスするための最低レベルのAPIであるため、可能な限り最高のパフォーマンスを提供します。
OCIでのSQLNCHAR文字列リテラルの処理
これをオンにするには、環境変数
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
を使用する場合OCI
からSQLテキストを取得するには ステートメントハンドル、SQLテキストはU'
を返しますN'
の代わりに 元のテキストで指定されているとおり 。
(3)質問への回答
データ型の観点からは、提供される両方のクエリに違いはありません