SQL エンティティ (列など) が持っているデータの種類を指定します。
概要
データ型は、列が保持する値の種類を指定します。SQL 式を定義するときは、以下のテーブルの左側の列に記載されている DDL データ型を指定できます。指定された DDL データ型は、右側の列に記載されている Caché データ型にマップされます。
Important:
以下に示す DDL または Caché の各データ型の式は、実際は 1 つのつながった文字列です。これらの文字列にはスペース文字が含まれるものもありますが、通常、空白は一切使用されません。以下のテーブルにある一部の空白は、読みやすくする目的で使用されています。
DDL データ型 対応する Caché データ型
BIGINT %Library.BigInt
BINARY VARYING(%1) %Library.Binary(MAXLEN=%1)
BINARY(%1) %Library.Binary(MAXLEN=%1)
BIT %Library.Boolean
CHAR %Library.String(MAXLEN=1)
CHAR VARYING(%1) %Library.String(MAXLEN=%1)
CHAR(%1) %Library.String(MAXLEN=%1)
CHARACTER %Library.String(MAXLEN=1)
CHARACTER VARYING(%1) %Library.String(MAXLEN=%1)
CHARACTER(%1) %Library.String(MAXLEN=%1)
DATE %Library.Date
DATETIME %Library.TimeStamp
DEC %Library.Numeric 64 ビット符号付整数 (MAXVAL=9223372036854775807, MINVAL=-9223372036854775808, SCALE=0)。
DEC(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,0)'|>, MINVAL=<|'$$minval^%apiSQL(%1,0)'|>, SCALE=0)。%1 で有効な最大値は 19 です。%1 に 19 より大きい値を指定してもエラーにはなりませんが、既定で 19 になります。
DEC(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
DECIMAL %Library.Numeric 64 ビット符号付整数 (MAXVAL=9223372036854775807、MINVAL=-9223372036854775808、SCALE=0)。
DECIMAL(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,0)'|>, MINVAL=<|'$$minval^%apiSQL(%1,0)'|>, SCALE=0)。%1 で有効な最大値は 19 です。%1 に 19 より大きい値を指定してもエラーにはなりませんが、既定で 19 になります。
DECIMAL(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
DOUBLE %Library.Float
DOUBLE PRECISION %Library.Float
FLOAT %Library.Float
FLOAT(%1) %Library.Float (MAXVAL=<|'$$maxval^%apiSQL(%1)'|>, MINVAL=<|'$$minval^%apiSQL(%1)'|>)
IMAGE BStream%String
INT %Library.Integer (MAXVAL=2147483647, MINVAL=-2147483648)
INTEGER %Library.Integer (MAXVAL=2147483647, MINVAL=-2147483648)
LONG CStream%String
LONG BINARY BStream%String
LONG RAW BStream%String
LONG VARCHAR(%1) CStream%String
LONG VARCHAR CStream%String
LONGVARBINARY BStream%String
LONGVARBINARY(%1) BStream%String
LONGVARCHAR CStream%String
LONGVARCHAR(%1) CStream%String
MONEY %Library.Currency(MAXVAL=922337203685477.5807, MINVAL=-922337203685477.5808, SCALE=4)
NATIONAL CHAR %Library.String(MAXLEN=1)
NATIONAL CHAR VARYING(%1) %Library.String(MAXLEN=%1)
NATIONAL CHAR(%1) %Library.String(MAXLEN=%1)
NATIONAL CHARACTER %Library.String(MAXLEN=1)
NATIONAL CHARACTER VARYING(%1) %Library.String(MAXLEN=%1)
NATIONAL CHARACTER(%1) %Library.String(MAXLEN=%1)
NATIONAL VARCHAR(%1) %Library.String(MAXLEN=%1)
NCHAR %Library.String(MAXLEN=1)
NCHAR(%1) %Library.String(MAXLEN=%1)
NTEXT CStream%String
NUMBER %Library.Numeric 64 ビット符号付整数 (MAXVAL=9223372036854775807, MINVAL=-9223372036854775808, SCALE=0)。
NUMBER(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1)'|>, MINVAL=<|'$$minval^%apiSQL(%1)'|>, SCALE=0)。%1 で有効な最大値は 19 です。%1 に 19 より大きい値を指定してもエラーにはなりませんが、既定で 19 になります。
NUMBER(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
NUMERIC %Library.Numeric 64 ビット符号付整数 (MAXVAL=9223372036854775807, MINVAL=-9223372036854775808, SCALE=0)。
NUMERIC(%1) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,0)'|>, MINVAL=<|'$$minval^%apiSQL(%1,0)'|>, SCALE=0)。%1 で有効な最大値は 19 です。%1 に 19 より大きい値を指定してもエラーにはなりませんが、既定で 19 になります。
NUMERIC(%1,%2) %Library.Numeric (MAXVAL=<|'$$maxval^%apiSQL(%1,%2)'|>, MINVAL=<|'$$minval^%apiSQL(%1,%2)'|>, SCALE=%2)
NVARCHAR(%1) %Library.String(MAXLEN=%1)
NVARCHAR(%1,%2) %Library.String(MAXLEN=%1)
RAW(%1) %Library.Binary(MAXLEN=%1)
REAL %Library.Float
SMALLINT %Library.SmallInt
SMALLMONEY %Library.Currency
TEXT CStream%String
TIME %Library.Time
TIMESTAMP %Library.TimeStamp
TINYINT %Library.TinyInt
VARBINARY(%1) %Library.Binary(MAXLEN=%1)
VARCHAR(%1) %Library.String(MAXLEN=%1)
VARCHAR(%1,%2) %Library.String(MAXLEN=%1)
VARCHAR2(%1) %Library.String(MAXLEN=%1)
ストリーム・データ型
ストリーム・データ型は、SQL スカラ集約、および単項関数の引数として使用できません。これらの関数にストリーム・データ型を使用すると、SQLCODE -37 エラー・コードが返されます。
SQL システム・データ型マッピング
上記のテーブルで DDL および Caché データ型の式に関して示した構文は、SQL.SystemDataTypes 用に構成された既定のマッピングです。システムで用意したデータ型とユーザ・データ型で個別のマッピング・テーブルが用意されています。
現在のデータ型マッピングを表示および変更するには、[システム管理ポータル] で [システム構成]→[詳細設定] を選択し、[カテゴリ] プルダウン・リストで [SQL] を選択します。[SystemDataTypes] の現在の値を表示するには、[内容] を選択します。
DDL データ型マッピングの理解
DDL から Caché にデータ型をマッピングするとき、通常のパラメータと関数パラメータに以下の規則が適用されます。
ユーザ定義の DDL データ型の作成
データ型の設定は、システム・データ型のパラメータ値のデータ型マッピングをオーバーライドするか、新しいユーザ・データ型を定義することによって変更できます。
現在のユーザ・データ型マッピングを表示または変更したり、マッピングを追加するには、[システム管理ポータル] で [システム構成]→[詳細設定] を選択し、[カテゴリ] プルダウン・リストで [SQL] を選択します。[UserDataTypes] の現在の値を表示するには、[内容] を選択します。ユーザ・データ型を追加するには、[新規アイテム追加] を選択します。表示されたボックスで、[キー] に VARCHAR(100)、[値] に MyString100(MAXLEN=100) のように入力します。
結果として、[UserDataTypes] に以下に示すエントリが表示されます。
VARCHAR(100)=MyString100(MAXLEN=100) 
ユーザ定義 DDL データ型を入力する際には、前の例に示したような、いくつかの便利なルーチンを使用できます。
DDL データ型を、Stream のコレクション型を持つ Caché プロパティにマップする必要がある場合は、テーブル内の Caché データ型として Character Streams には CStream%String を、Binary Streams には BStream%String をそれぞれ指定します。
DDL マッピングが見つからない場合のデータ型の処理
[ユーザ DDL データ型マッピング] テーブルの DDL データ型列にないデータ型が DDL で検出されると、次に [システム DDL データ型マッピング] テーブルが調べられます。どちらのテーブルにもデータ型マッピングがない場合は、そのデータ型は変換されず、DDL で指定されているクラス定義に直接渡されます。
例えば、以下のフィールド定義が DDL 文にあるとします。
     CREATE TABLE TestTable (
          Field1 %String,
          Field2 %String(MAXLEN=45)
          )
上記の定義では、%String%String(MAXLEN=%1)、または %String(MAXLEN=45) のマッピングが、[ユーザ DDL データ型マッピング][システム DDL データ型マッピング] に見つからない場合、%String%String(MAXLEN=45) 型が適切なクラス定義に直接渡されます。
データ型の変換
特定の型から別の型にデータ型を変換するには、CAST または CONVERT 関数を使用します。
CAST は、一部の文字列データ型と数値データ型に加えて、DATE、TIME、および TIMESTAMP への変換をサポートします。
CONVERT には、2 通りの構文形式があります。両方の形式が、DATE、TIME、および TIMESTAMP データ型との相互変換、およびその他のデータ型間での変換をサポートします。
関連項目