char 型と varchar 型のデータの使用

char 型と varchar 型には、次の要素から構成されるデータが格納されます。

  • a、b、C などの大文字と小文字
  • 1、2、3 などの数字
  • アット マーク (@)、アンパサンド (&)、感嘆符 (!) などの特殊文字

char 型または varchar 型のデータは、1 文字または文字列にできます。文字列の最大文字数は、char 型の場合は 8,000 文字、varchar 型の場合は 2^31 文字です。varchar 型では 2 つの形式を使用できます。varchar 型のデータでは、文字列の最大長を指定できます。たとえば、varchar(6) は、このデータ型に最大 6 文字まで格納できることを示します。また、varchar(max), という形式にすることもできます。この形式により、このデータ型に格納できる最大文字数が 2^31 文字まで増加します。varchar(max), の詳細については、「大きな値のデータ型の使用」を参照してください。

char 型と varchar 型のデータ値には、それぞれ照合順序があります。照合順序とは、各文字を表現するために使用するビット パターン、比較の規則、大文字小文字またはアクセントの区別などの属性が定義されます。各データベースには既定の照合順序があります。列を定義した際や、定数を指定した際には、COLLATE 句を使用して特定の照合順序を割り当てない限り、これらにデータベースの既定の照合順序が割り当てられます。照合順序が異なる char 型または varchar 型の 2 つの値を結合または比較する場合、操作に使用される照合順序は、照合順序の優先順位に関する規則によって決まります。

文字定数は単一引用符 (') または二重引用符 (") で囲む必要があります。文字定数は単一引用符で囲むことをお勧めします。QUOTED IDENTIFIER オプションが ON に設定されている場合は、文字定数を囲むときに二重引用符を使用できない場合もあります。

文字変数を値に設定する Transact-SQL の例を次に示します。

DECLARE @MyCharVar CHAR(25)
SET @MyCharVar = 'Ricardo Adocicados'

埋め込み型単一引用符を含む文字定数を単一引用符で区切る場合は、2 つの単一引用符で埋め込み型単一引用符を表します。次に例を示します。

SET @MyCharVar = 'O''Leary'

格納するデータが許容文字数より長い場合は、データが切り捨てられます。たとえば、列を char(10) と定義した場合、この列に "This is a really long character string" という値を格納すると、SQL Server によって文字列が "This is a " に切り捨てられます。

NOT NULL 句を指定した場合、char 型は固定長型になります。列の長さより短い値を char 型の NOT NULL 列に挿入すると、列のサイズまでこの値の右側の桁に空白が埋め込まれます。たとえば、列を char(10) と定義した場合に、"music" というデータをこの列に格納すると、SQL Server はこのデータを "music_____" として格納します。"_" は空白を表します。

char 型の NULL 列を作成するときに ANSI_PADDING を ON に設定した場合、この列は char 型の NOT NULL 列と同様に機能します。つまり、列のサイズまでこの値の右側の桁に空白が埋め込まれます。char 型の NULL 列を作成するときに ANSI_PADDING を OFF に設定した場合、この列は、varchar 型の列を作成するときに ANSI_PADDING を OFF に設定した場合と同様に機能します。つまり、後続の空白が削除されます。

varchar 型は可変長データ型です。列のサイズより短い値を挿入した場合でも、値の右側の桁に空白が埋め込まれることはありません。列を作成するときに ANSI_PADDING オプションを OFF に設定した場合、列に格納した文字値の後に続く空白は削除されます。列を作成するときに ANSI_PADDING を ON に設定した場合、後続の空白は削除されません。

文字列のバイトに格納されたビット パターンは、セットアップ時に指定された Microsoft SQL Server 2005 コード ページに基づいて解釈されます。char 型または varchar 型のオブジェクトには、SQL Server コード ページの任意の文字を格納できます。 .

SQL Server 6.5 以前の SQL Server ODBC ドライバを使用しているアプリケーションでは、最大 255 バイトの文字データしかサポートされません。これらのアプリケーションで、255 バイトを超えるデータを含む SQL Server 7.0 以降の文字パラメータまたは結果セット列を取得しようとすると、その文字データは 255 バイトに切り捨てられます。

参照

その他の技術情報

データ型 (Transact-SQL)
char および varchar (Transact-SQL)
照合順序の優先順位 (Transact-SQL)
SET ANSI_PADDING (Transact-SQL)
sp_dbcmptlevel (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手