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

OracleとSQLServerのNVARCHARの違いは?

    はい、OracleデータベースがUnicode文字セットを使用して作成されている場合、NVARCHAR SQLServerではVARCHAR2に移行する必要があります Oracleで。 Oracleでは、NVARCHAR データ型は、データベースの文字セットがUnicodeをサポートしていない場合に、アプリケーションがUnicode文字セットを使用してデータを格納できるようにするために存在します。

    ただし、移行時に注意する必要があるのは、文字長のセマンティクスです。 SQL Serverでは、NVARCHAR(20) 20文字にスペースを割り当てます。UCS-2では最大40バイトが必要です。 Oracleでは、デフォルトでVARCHAR2(20) 20バイトのストレージを割り当てます。 AL32UTF8内 文字セット。これは、6文字に十分なスペースである可能性がありますが、より多くの文字を処理できる可能性があります(AL32UTF8の1文字 1〜3バイトが必要です。 OracleタイプをVARCHAR2(20 CHAR)として宣言することをお勧めします。 これは、必要なバイト数に関係なく、20文字にスペースを割り当てたいことを示しています。これは、20文字の文字列が許可され、他の10文字の文字列が拒否される理由を説明するよりもはるかに簡単に伝達できる傾向があります。

    セッションレベルでデフォルトの長さセマンティクスを変更して、長さセマンティクスを指定せずに作成したテーブルがバイトセマンティクスではなく文字を使用するようにすることができます

    ALTER SESSION SET nls_length_semantics=CHAR;
    

    これにより、CHARの入力を回避できます 新しい列を定義するたび。これをシステムレベルで設定することも可能ですが、NLSチームはこれを推奨していません。明らかに、Oracleが提供するすべてのスクリプトが、NLS_LENGTH_SEMANTICSが存在するデータベースに対して徹底的にテストされているわけではありません。 変更されました。そして、おそらくサードパーティのスクリプトはほとんどありません。




    1. to_char()関数を使用せずにPostgreSQLで日付から年と月を抽出するにはどうすればよいですか?

    2. バインド変数でGROUPBYを使用することは可能ですか?

    3. 内部結合を使用したOracleUpdateステートメント

    4. JDBCを使用してOracle11gで最後の挿入IDを取得する