VARCHAR
フィールドは、LENGTH-VALUEデータ型です。バイナリのlengthサブフィールドおよびその長さを持つ文字列で構成されます。データ・ファイルに文字長セマンティクスが使用されないかぎり、長さはバイト単位です。文字長セマンティクスが使用される場合は、文字単位になります。詳細は、「文字長セマンティクス」を参照してください。
VARCHAR
フィールドは、SHORT
データ・フィールドのINT
の長さが同じバイト数のシステム間でのみ、正しくロードできます。バイト順序がシステム間で異なる場合、またはVARCHAR
フィールドにUTF16キャラクタ・セットのデータが含まれている場合は、適切な方法でlengthサブフィールドおよびデータのバイト順序を指定します。データのバイト順序は、UTF16キャラクタ・セットに対してのみ問題となります。詳細は、「バイト順序」を参照してください。
注意:
lengthサブフィールドのサイズには、システム上のSQL*LoaderのSMALLINT
データ型の長さ(C言語のSHORT
INT
型に相当する長さ)が取られます。詳細は、「SMALLINT」を参照してください。
VARCHAR
データ型の構文は次のとおりです。
制御ファイルに指定する最大長には、lengthサブフィールドのサイズを含むことはできません。VARCHAR
データ型にオプションで最大長を指定すると、そのサイズ分のバッファがこのフィールドに対してバイト単位で割り当てられます。ただし、文字長セマンティクスがデータ・ファイルに使用される場合、バイト単位のバッファ・サイズは、キャラクタ・セット内の最大限の文字のバイト単位のサイズのmax
_length
倍となります。詳細は、「文字長セマンティクス」を参照してください。
デフォルトの最大サイズは4KBです。データのロードに必要な最小限の値を最大値として指定することによって、SQL*Loaderで使用されるメモリーを最小限に抑えることができます。特に、VARCHAR
フィールドを多数使用する場合有効です。
POSITION
句を使用する場合、指定する位置は、テキスト文字の先頭ではなく、lengthサブフィールドのバイト単位の位置になります。POSITION(start:end)
と指定すると、endの位置によってそのフィールドの最大長が決まります。したがって、(end+1)
からstart
の値を引くと、フィールドの実際のバイト長が求められます。最大長を指定した場合は、その最大長の方がPOSITION
句から計算された長さよりも優先されます。
VARCHAR
フィールドのフィールド長全体が、読み込まれる前に論理レコードの終わりで切り捨てられた場合、警告が出力されます。VARCHAR
型のフィールド長は、そのフィールドの各入力データ中に埋め込まれているため、そのフィールド長の方が正確であるとみなされます。
VARCHAR
データに対してはデリミタを使用できません。