可変長文字 (VARCHAR) 型は、シングルバイトおよびマルチバイト文字 (ロケールがサポートしている場合) を含む可変長文字列を格納し、m は列の最大サイズ (バイト)、r はその列に対して予約された最小バイト数を表します。
括弧 または引数パラメータなしで可変長文字 (VARCHAR) 型として宣言された列は、最大サイズが 1 バイトで、予約済みのサイズが 0 になります。
可変長文字 (VARCHAR) 型は、可変長文字 (CHARACTER VARYING) 型の IBM® Informix® インプリメンテーションです。可変長文字列の ANSI 標準データ型は、可変長文字 (CHARACTER VARYING) 型です。
可変長文字 (VARCHAR) 型列の最大サイズ ( m) パラメータのサイズは、1 から 255 バイトまでの範囲で 指定できます。可変長文字 (VARCHAR) 型列にインデックスを付ける場合、最大サイズに指定できる値は 1 から 254 になります。指定した m の値より短い文字列は格納できますが、それより長い文字列は格納できません。
最小予約領域 (r) パラメータの指定はオプションです。この値は 0 から 255 バイトの範囲が可能ですが、可変長文字 (VARCHAR) 型列の最大サイズ (m) より小さい必要があります。最小値を指定しないと、デフォルト値にゼロが設定されます。行の挿入時の列の初期値が短い文字列や NULL であっても、後に行を更新する際、長い文字列を格納する可能性がある場合、このパラメータを 指定します。
255 バイトより長い可変長文字列では、可変長文字 (VARCHAR) 型ではなく、ラージ可変長文字 (LVARCHAR) 型を使用します。この型の上限は 32,739 バイトです。
可変長文字 (VARCHAR) 型列 (または各国語可変長 (NVARCHAR) 型列) を 基にしたインデックスでは、各インデックス キーは、宣言された 列の最大サイズではなく、実際に入力されたデータ値に基づく長さに なります (ただし、IBM Informix が送受信する可変長文字 (VARCHAR) 型および各国語可変長 (NVARCHAR) 型データ ストリングの有効なサイズの構成方法については、IFX_PAD_VARCHAR 環境 変数を参照してください)。
可変長文字 (VARCHAR) 型列に文字列を格納する場合、実データ文字のみ格納されます。データベース サーバは、ユーザが入力した後続の空白文字の可変長文字 (VARCHAR) 型の文字列をストリップしません。また、可変長文字 (VARCHAR) 型値を、宣言された列の長さにパッドしません。予約済み領域 (r) を指定し、一部のデータ ストリングが r バイトより短い場合、一部の行のための予約済み領域が未使用になります。
文字 (CHAR) 型値の場合と同様の方法で、可変長文字 (VARCHAR) 型値は他の可変長文字 (VARCHAR) 型値と比較されます。短い値の方は、長さがもう一方と等しくなるまで右側に空白がパッドされます。その後、全体の長さの比較が行われます。
同じ表で許容される可変長文字 (VARCHAR) 型列は、195 列までです。
出力不可能可変長文字 (VARCHAR) 型文字は、文字 (CHAR) 型値の場合と同様の方法で入力、表示、および取り扱われます。詳しくは、文字 (CHAR) 型の出力不可能文字を参照してください。
可変長文字 (VARCHAR) 型の列に数値を挿入する場合、格納する値に対して、その列の最大長まで後書きの空白がパッドされることはありません。可変長文字 (VARCHAR) 型値の桁数は、その値を格納するのに必要となる文字数になります。次の例では、表 mytab に格納される数値は 1 です。
create table mytab (col1 varchar(10));
insert into mytab values (1);
一部の東アジア ロケールでは、データベース ロケールがマルチバイト コード セットをサポートしている場合、可変長文字 (VARCHAR) 型はマルチバイト文字を格納できます。マルチバイト文字を格納する場合は、必要なバイト数を算出してください。詳しくは、「IBM Informix GLS ユーザーズ ガイド」を参照してください。
可変長文字 (VARCHAR) 型宣言の最初のパラメータは、文字型宣言の論理文字セマンティクスセクションで説明されている SQL_LOGICAL_CHAR 機能の影響を受ける可能性があります。
各国語可変長 (NVARCHAR) 型と可変長文字 (VARCHAR) 型の主な違いは、(文字 (CHAR) 型と各国語文字 (NCHAR) 型の違いと同様に) 照合順序の違いです。一般に、可変長文字 (VARCHAR) 型値の照合は (文字 (CHAR) 型とラージ可変長文字 (LVARCHAR) 型と同様に)、 コード セットにある文字順です。
MATCHES 演算子は例外です。これは、DB_LOCALE (または SET COLLATION) がローカライズ順の照合を指定した場合に大括弧 ([ ]) で範囲を指定すると、ローカライズ照合を各国語可変長文字 (NVARCHAR) 型と可変長文字 (VARCHAR) 型の値 (および文字 (CHAR) 型、ラージ可変長文字 (LVARCHAR) 型、および各国語文字 (NCHAR) 型値) に適用します。詳しくは、「IBM Informix GLS ユーザーズ ガイド」を参照してください。