Oracleのvarchar(max)と同等のものは何ですか?
CLOB?
Oracleでは、Varcharは4000文字に制限されています。それ以外は、LONGまたはCLOBを使用する必要があります。 CLOBを優先します。 LONGは古い同等のものです。
このOracleドキュメント から:
LOBとLONGおよびLONG RAW
LOBは、多くの点で古いLONGおよびLONG RAWデータ型とは異なります。
- LOBの最大サイズは4ギガバイトですが、LONGおよびLONG RAWの場合は2ギガバイトです。
- LOBでは、ランダムおよびシーケンシャルアクセス方式を使用できます。 LONGおよびLONG RAWでのみ順次アクセス方式を使用できます。
- LOB(NCLOBを除く)は、定義するオブジェクトタイプの属性にすることができます。
- テーブルには複数のLOB列を含めることができますが、LONG列またはLONG RAW列は1つしか持てません。
Oracleでは、既存のLONGおよびLONG Raw属性のLOBへの移行を推奨しています。 Oracleは、将来のリリースでLONGおよびLONG RAWのサポートを終了する予定です。移行の詳細は、Oracle8の移行を参照してください。
私が理解しているように、VARCHAR(MAX)データ型は、小さい(SQL Serverで最大8000文字)テキストフィールドを指定するSQL Server 2005固有の方法ですor大きい(SQL Serverでは最大2GB)。データベースは、ストレージの変更を処理します舞台裏コンテンツが小さな範囲から大きな範囲に拡大するにつれて。
Oracleには同等のものはありません。
VARCHAR2に小さなテキスト(pl/sqlでは最大32767バイト、SQL(テーブル定義)では最大4000バイト)があるか、CLOBに潜在的に非常に大きなテキストがあります。 (これは特殊なBLOBです)。
PL/SQLでは、VARCHAR2は最大32767バイトです。 SQLの場合、制限は4000バイトです(マルチバイト文字セットを使用している場合は、4000文字未満になる場合があります)。
Oracle 11g Gatewayは、Varchar(Max)をLONGに変換します。あまり便利ではなく、OracleへのSQL Serverデータのロードに大きな問題を引き起こします。
詳細については、次のURLを参照してください。 http://docs.Oracle.com/cd/B28359_01/gateways.111/b31049/apa.htm
私が過去に使用したアプローチ(MS SQL、Varchar(max)より前):
テーブルに2つの列を配置します。1つは小さめのVarchar(たとえば255)、もう1つはTextです。次に、小さなデータにVarchar列を使用するようにアプリケーションを構築し、Textをnullのままにします。データがVarcharよりも大きい場合は、そのnullのままにしてTextに保存します。このように、小さなデータはサーバー上の独自のページを占有しません。ここでのトレードオフは、データを使用するすべてのアプリケーションがこのスキームに同意する必要があり、それを説明するロジックを持っていることです。しかし、それはうまく機能します。
同じことがOracleにも当てはまると思います。VarcharにはVarchar2を、TextにはCLOBを代入するだけです。 varcharの適切なサイズが何であるかを知るふりはしません-それはデータに依存し、テーブル内の残りの列にも依存します。
知る限り、同等のものはありません。 Oracleで最も近いものはCLOBです。これには、TEXTが「悪い昔」にSQL Serverに持っていたのと同じ制限があります。