Oracle 12.1より前は、VARCHAR2
列は、VARCHAR2(4000 CHAR)
と宣言されている場合でも、データベースの文字セットに4000バイトのデータを格納するように制限されています。 。文字列内のすべての文字はUTF-8文字セットに2バイトのストレージを必要とするため、列に2000文字を超える文字を格納することはできません。もちろん、一部の文字が実際に1バイトのストレージしか必要としない場合、または一部の文字が2バイトを超えるストレージを必要とする場合、その数は変わります。データベースの文字セットがWindows-1252の場合、文字列内のすべての文字に必要なストレージは1バイトだけなので、列に4000文字を格納できます。
文字列が長いので、列をCLOB
として宣言することは可能でしょうか。 VARCHAR2
としてではなく ?これにより、(効果的に)長さの制限がなくなります(CLOB
のサイズには制限があります) これは、Oracleのバージョンとブロックサイズによって異なりますが、少なくとも数GBの範囲です)。
Oracle 12.1以降を使用している場合は、max_string_size
パラメータを使用すると、の最大サイズを増やすことができます。 VARCHAR2
4000バイトから32767バイトまでの列
。