CHAR データ型は、32767 バイトまでの文字データを格納します。
CHAR [ ( max-length [ CHAR | CHARACTER ] ) ]
max-length 文字列の最大長。バイト長のセマンティックを使用する場合 (長さの部分に CHAR または CHARACTER を指定しない場合)、長さはバイト単位になります。また、範囲は 1 ~ 32767 にします。指定しない場合の長さは 1 です。
文字長のセマンティックを使用する場合 (長さの部分に CHAR または CHARACTER を指定する場合)、長さは文字単位になります。また、max-length を指定します。文字長のセマンティックを使用する場合、データベースのエンコーディングで、文字長に文字の最大長を乗じた数が 32767 バイトを超えないようにします。次の表は、サポートされる文字セットの型ごとの最大長です。
文字セット | CHAR の最大長 |
---|---|
SBCS | 32767 文字 |
DBCS | 16383 文字 |
UTF-8 | 8191 文字 |
マルチバイト文字は CHAR 型に格納できますが、文字長のセマンティックを使用していなければ、宣言される長さは文字数ではなくバイト数です。
CHAR は CHARACTER と指定することもできます。どの構文を使用する場合でも、データ型は CHAR と記述されます。
セマンティック上、CHAR は VARCHAR と同じですが、型は異なります。SQL Anywhere では、CHAR は可変長型です。他のリレーショナル・データベース管理システムでは、CHAR は固定長型であり、データには max-length バイトまでブランクが埋め込まれて格納されます。SQL Anywhere では格納される文字データにブランクを埋め込みません。
文字長のセマンティックを使用すると、使用するインタフェースによって、クライアント・アプリケーションでカラムに DESCRIBE が実行されたときに返される値が変わることがあります。たとえば、Embedded SQL クライアントで、バイト長のセマンティックを使用して宣言されたカラムに DESCRIBE が実行された場合、バイト長が指定された値が返されます。そのため、CHAR(10) のカラムは 10 バイト長の DT_FIXCHAR 型として記述されます。ただし、Embedded SQL クライアントで、文字長のセマンティックを使用して宣言されたカラムに DESCRIBE が実行された場合、クライアントの CHAR 文字セットの最大バイト長が返されます。たとえば、CHAR 文字セットに UTF-8 を使用する Embedded SQL クライアントの場合、CHAR(10 CHAR) カラムは 40 バイト長 (10 文字の各文字に最高 4 バイトを乗じた値) の DT_FIXCHAR 型と記述されます。
SQL/2003 SQL/2003 と互換性があります。文字長のセマンティックはベンダ拡張です。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |