sql >> データベース >  >> RDS >> Oracle

OracleのN'String'リテラルとU'String'リテラルの違い

    この回答では、公式リソースからの情報を提供しようとします

    (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++プログラムがSQLCHARに格納されている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)質問への回答

    データ型の観点からは、提供される両方のクエリに違いはありません



    1. 行1、列4(年)のバルクロードデータ変換エラー(指定されたコードページのタイプの不一致または無効な文字)

    2. jQuery/AJAXとPHP/MySQLを使用して最初のドロップダウンの選択に基づいて2番目のドロップダウンを設定するにはどうすればよいですか?

    3. MySQLエラー1064を修正する方法

    4. 選択した結果を挿入スクリプトに変換する-SQLServer