この回答では、公式リソースからの情報を提供しようとします
(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_OFFOCIEnvCreate()のモード およびOCIEnvNlsCreate()。したがって、たとえば、OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_ON)NCHARをオンにします 文字通りの置換、OCIEnvCreate(OCI_NCHAR_LITERAL_REPLACE_OFF)オフにします。[...]
NCHARの場合は注意してください 文字通りの置換がオンになっている、OCIStmtPrepareおよびOCIStmtPrepare2N'を変換しますU'を含むリテラル SQLテキスト内のリテラルと、結果のSQLテキストをステートメントハンドルに格納します 。したがって、アプリケーションがOCI_ATTR_STATEMENTを使用する場合OCIからSQLテキストを取得するには ステートメントハンドル、SQLテキストはU'を返しますN'の代わりに 元のテキストで指定されているとおり 。
(3)質問への回答
データ型の観点からは、提供される両方のクエリに違いはありません