ヘッダーをスキップ
Oracle TimesTen In-Memory Database SQLリファレンス・ガイド
リリース11.2.1
B56051-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1 データ型

データ型は値のセットを定義します。データ型の参照は、コンテキストに指定可能な値のセットを指定します。

データ型は、表から検索された値、または式や定数に従って計算された値に応じて決まります。

TimesTenでは、ODBC標準に基づいてデータ型が変換されます。このマニュアルにODBC標準の解説は含まれていません。 詳細は、『Microsoft ODBC 2.0 Programmer's Reference and SDK Guide』または『Microsoft ODBC 3.0 Developer's Kit and Programmer's Reference』の「付録D」を参照してください。

IMDB Cacheを使用している場合は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のOracleデータ型とTimesTenデータ型のマッピングに関する説明を参照してください。この項では、パススルー問合せで行われる型変換およびキャッシュ・グループの列の作成に有効なデータ型を比較します。

データ型の仕様

TimesTenでは、デフォルトのOracle型モードで表1-1のデータ型がサポートされています。型モードは、データ・ストア作成属性です。 TypeMode=0はOracle型モードを示します。TypeMode=1はTimesTenモードを示します。

型モードの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTypeModeに関する説明を参照してください。

表1-1 Oracle型モードでサポートされているデータ型

データ型 説明

BINARY (n)

nバイトの固定長バイナリの値。nに指定できる値は、1から8300です。

BINARYデータは、後続の0(ゼロ)を使用してその列の最大長まで調整されます。

かわりに、TT_BINARY (n)を指定することもできます。

BINARY_DOUBLE

64ビットの浮動小数点数。BINARY_DOUBLEは倍精度のネイティブの浮動小数点数です。 +Inf、-InfおよびNanの各値をサポートしています。BINARY_DOUBLEは指数と小数部からなる近似値です。指数またはE表記法を使用できます。BINARY_DOUBLEにはバイナリ精度53が指定されています。

正の最小有限値: 2.22507485850720E-308

正の最大有限値: 1.79769313486231E+308

BINARY_FLOAT

32ビットの浮動小数点数。BINARY_FLOATは単精度のネイティブの浮動小数点型です。+Inf、-InfおよびNaNの各値をサポートしています。BINARY_FLOATは指数と小数部からなる近似値です。指数またはE表記法を使用できます。BINARY_FLOATにはバイナリ精度24が指定されています。

正の最小有限値: 1.17549E-38F

正の最大有限値: 3.40282E+38F

CHAR[ACTER] [(n [BYTE|CHAR])]

長さがnバイトまたはn文字の固定長文字列。デフォルトは1バイトです。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上8300バイト以下です。

CHARは、列に文字長セマンティクスが使用されていることを示します。CHARの最小長は1文字です。最大長は8300バイトに収まる文字数によって異なります。これは使用されているデータベース・キャラクタ・セットによって決まります。キャラクタ・セットがAL32UTF8の場合、1文字当たり最大4バイトが必要になる可能性があるため、CHARの長さは、キャラクタ・セットに応じて2075から8300の範囲に制限されます。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

CHARのデータは後続の空白を使用してその列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。

かわりに、ORA_CHAR[(n [BYTE|CHAR])]を指定することもできます。

DATE

日付と時刻の情報(世紀、年、月、日、時、分、秒)を格納します。

書式はYYYY-MM-DD HHMMSSです。

有効な日付の範囲は紀元前4712年1月1日から西暦9999年12月31日です。

小数秒はありません。

かわりに、ORA_DATEを指定することもできます。

INTERVAL [+/-] IntervalQualifier

TimesTenはINTERVAL型を部分的にサポートします。INTERVAL型は、型INTERVALとIntervalQualifierで表現されます。IntervalQualifierには、精度を持たない単一のフィールド型のみを指定できます。デフォルトの先行精度は、すべてのINTERVAL型で8桁です。 単一のフィールド型は、YEAR、MONTH、DAY、HOUR、MINUTE、SECONDのいずれかです。現在、INTERVAL型は定数でのみ指定できます。

NCHAR[(n)]

長さがn×2バイトのUnicode文字の固定文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。NCHARの文字の制限はバイトの制限の2分の1であるため、最大サイズは4150です。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

NCHARのデータはU+0020 SPACEを使用してその列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。

かわりに、ORA_NCHAR [(n)]を指定することもできます。

NUMBER [(precision [,scale])]

精度とスケールが指定された数値。精度の範囲は1から38桁です。スケールの範囲は-84から127です。精度とスケールの両方ともオプションです。

精度およびスケールを指定しない場合は、最大精度の38および柔軟なスケールが指定されたとみなされます。

NUMBERは、精度より大きいスケールおよび負のスケールをサポートしています。

NUMBERは、1.0 x 10-130から1.0 x 10126未満の絶対値を含む正と負の固定数値および0(ゼロ)を格納します。値が1.0 x 10126以上の絶対値である算術式を指定すると、エラーが戻されます。

NVARCHAR2(n)

n×2バイトのUnicode文字の可変長文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。NVARCHAR2の文字の制限はバイトの制限の2分の1であるため、最大サイズは2,097,152(221)です。nを指定する必要があります。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

非空白埋め比較セマンティクスが使用されます。

かわりに、ORA_NVARCHAR2(n)を指定することもできます。

ROWID

表の行またはマテリアライズド・ビューの行のアドレスを表す18バイトの文字列です。

リテラルのROWID値は、一重引用符で囲んでCHAR定数として指定してください。

TIME

00:00:00(午前0時)から23:59:59(午後11時59分59秒)の間の時刻。書式はHH:MI:SSです。

かわりに、TT_TIMEを指定することもできます。

TIMESTAMP

[(fractional_seconds_precision)]

日付データ型の年、月および日の値に加えて、時、分および秒の時間の値を格納します。Fractional_seconds_precisionは、秒のフィールドの小数部の桁数です。有効な日付の範囲は紀元前4712年1月1日から西暦9999年12月31日です。

TT_TIMESTAMPの記憶域サイズはTIMESTAMPより小さく、TT_TIMESTAMPの処理速度はTIMESTAMPより速くなります。これは、TT_TIMESTAMPが1754年1月1日以降のマイクロ秒数を含む8バイトの整数であるためです。比較が非常に速くなります。TIMESTAMPでは紀元前4712年以降の日時データを格納できるため、TIMESTAMPの範囲はTT_TIMESTAMPより大きくなります。また、TIMESTAMPでは最大9桁の小数秒の精度がサポートされ、TT_TIMESTAMPでは6桁の小数秒の精度がサポートされています。

小数秒の精度の範囲は0(ゼロ)から9です。デフォルトは6です。書式は次のとおりです。

YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]

かわりに、ORA_TIMESTAMP[(fractional_seconds_precision)]を指定することもできます。

TT_BIGIN

次の範囲の符号付き8バイト整数:

-9,223,372,036,854,775,808 -(263) から

9,223,372,036,854,775,807 (263 - 1)。

NUMBERデータ型ではなくTT_BIGINTを使用します。TT_BIGINTは、NUMBER型より小さいサイズで、高速なパフォーマンスを提供します。19桁より大きい整数を格納する必要がある場合は、NUMBER (p)(p > 19)を使用します。

TT_DATE

日付情報(世紀、年、月、日)を格納します。書式はYYYY-MM-DDです。MMは整数で表します。次に例を示します。

2006-10-28

有効な日付は、1753-01-01(1753年1月1日)から9999-12-31(9999年12月31日)の間の日付です。

TT_INT[EGER]

-2,147,483,648 --(231)から2,147,483,647 (231-1)の範囲の符号付き整数。

TT_INTEGERはネイティブの符号付き整数データ型です。INTEGERではなくTT_INTEGERを使用します。INTEGERはNUMBERデータ型にマップされます。TT_INTEGERは、NUMBER型より小さいサイズで、高速なパフォーマンスを提供します。19桁より大きい整数を格納する必要がある場合は、NUMBER (p)(p > 19)を使用します。

TT_SMALLINT

–32,768 –(215)から32,767(215–1)の範囲のネイティブの符号付き16ビット整数。

SMALLINTではなくTT_SMALLINTを使用します。SMALLINTはNUMBERデータ型にマップされます。

TT_SMALLINTは、NUMBER型より小さいサイズで、高速なパフォーマンスを提供します。19桁より大きい整数を格納する必要がある場合は、NUMBER (p)(p > 19)を使用します。

TT_TIMESTAMP

1753-01-01 00:00:00(1753年1月1日の午前0時)から9999-12-31 23:59:59(9999年12月31日の午後11時59分59秒)の間の日付と時刻。マイクロ秒に満たない端数は、「Data Truncated」エラーになります。書式はYYYY-MM-DD HH:MI:SS [.FFFFFF]です。

TT_TIMESTAMPの記憶域サイズはTIMESTAMPより小さく、TT_TIMESTAMPの処理速度はTIMESTAMPより速くなります。これは、TT_TIMESTAMPが1754年1月1日以降のマイクロ秒数を含む8バイトの整数であるためです。比較が非常に速くなります。TIMESTAMPでは紀元前4712年以降の日時データを格納できるため、TIMESTAMPの範囲はTT_TIMESTAMPより大きくなります。また、TIMESTAMPでは最大9桁の小数秒の精度がサポートされ、TT_TIMESTAMPでは6桁の小数秒の精度がサポートされています。

TT_TIMESTAMP (6)を指定できます。

TT_TINYINT

0から255(28-1)の範囲の符号なし整数。

NUMBERデータ型ではなくTT_TINYINTを使用します。TT_TINYINTは、NUMBER型より小さいサイズで、高速なパフォーマンスを提供します。19桁より大きい整数を格納する必要がある場合は、NUMBER (p)(p > 19)を使用します。

TT_TINYINTは符号なしのため、TT_TINYINTを否定するデータ型はTT_SMALLINTになります。

VARBINARY (n)

最大長がnバイトの可変長バイナリの値。nに指定できる値は、1から4194304(222)です。

かわりに、TT_VARBINARY(n)を指定することもできます。

VARCHAR[2] (n [BYTE|CHAR])

最大長がnバイトまたはn文字の可変長文字列。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上4194304(222)バイト以下です。nを指定する必要があります。

CHARは、列に文字長セマンティクスが使用されていることを示します。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

非空白埋め比較セマンティクスが使用されます。

VARCHAR型は使用しないでください。VARCHAR型は現在VARCHAR2と同じ意味で使用されていますが、再定義される予定です。

かわりに、ORA_VARCHAR2 (n [BYTE|CHAR])を指定することもできます。


ANSI SQLデータ型

TimesTenでは、Oracle型モードでANSI SQLデータ型がサポートされています。 これらのデータ型は、TimesTenデータ型に変換され、データはTimesTenデータ型として保存されます。 表1-2に、ANSI SQLデータ型とTimesTenデータ型とのマッピングを示します。

表1-2 データ型のマッピング: ANSI SQLからTimesTen

ANSI SQLデータ型 TimesTenデータ型

CHARACTER VARYING (n [BYTE|CHAR])またはCHAR VARYING(n[BYTE|CHAR])

VARCHAR2 (n[BYTE|CHAR])

文字セマンティクスがサポートされています。

DOUBLE [PRECISION]

NUMBER

バイナリ精度126の浮動小数点数。

かわりに、FLOAT (126)またはORA_FLOAT (126)を指定することもできます。

FLOAT [(b)]

NUMBER

バイナリ精度bを使用する浮動小数点数。 bに使用できる値は1から126ビットです。

FLOATは正確な数値型です。FLOATは、浮動スケールおよび指定された精度で列を定義する場合に使用します。NUMBER型では、浮動スケールはサポートされていますが、精度は指定できません。精度が低いと必要な領域も小さくなります。bを指定しない場合、精度はデフォルトで126バイナリ(38桁)になります。

BINARY_FLOATおよびBINARY_DOUBLEは不正確な数値型であるため、FLOATとは異なる浮動型となります。また、FLOATとBINARY_FLOAT/BINARY_DOUBLEの間ではセマンティクスが異なります。これは、BINARY_FLOATおよびBINARY_DOUBLEがIEEE標準に準拠しているためです。

内部的には、FLOATはNUMBER型として実装されます。

かわりに、ORA_FLOATを指定することもできます。次に例を示します。

FLOAT (24) = ORA_FLOAT (24)

FLOAT (53) = ORA_FLOAT (53)

FLOAT (n) = ORA_FLOAT (n)

INT[EGER]

NUMBER (38,0)

TT_INTEGERはネイティブの32ビット整数型です。TT_INTEGERはNUMBER型と比べてサイズが小さくなり、より高速のパフォーマンスを提供するため、このデータ型を使用します。

NATIONAL CHARACTER (n)または

NATIONAL CHAR (n)

NCHAR (n)

NATIONAL CHARACTER VARYING (n)または

NATIONAL CHAR VARYING (n)または

NCHAR VARYING (n)

NVARCHAR2 (n)

NUMERIC [(p[,s])]または

DEC[IMAL] [(p[,s])]

NUMBER (p,s)

精度pおよびスケールsを使用して、固定小数点数を指定します。 固定小数点数に対してのみ使用できます。スケールを指定しない場合、sはデフォルトで0(ゼロ)に設定されます。

REAL

NUMBER

バイナリ精度63の浮動小数点数。

かわりに、ORA_FLOAT (63)またはFLOAT (63)を指定することもできます。

SMALLINT

NUMBER (38,0)

TT_SMALLINTはネイティブの符号付き整数データ型です。TT_SMALLINTはNUMBER型と比べてサイズが小さくなり、より高速のパフォーマンスを提供するため、このデータ型を使用します。


Oracle型モードでの下位互換用にサポートされている型

TimesTenでは、Oracle型モードでの下位互換用に表1-3のデータ型がサポートされています。

型モードの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTypeModeに関する説明を参照してください。

表1-3 Oracle型モードでの下位互換性用にサポートされているデータ型

データ型 説明

TT_CHAR [(n [BYTE|CHAR])]

長さがnバイトまたはn文字の固定長文字列。デフォルトは1バイトです。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上8300バイト以下です。

CHARは、列に文字長セマンティクスが使用されていることを示します。CHARの最小長は1文字です。最大長は8300バイトに収まる文字数によって異なります。これは使用されているデータベース・キャラクタ・セットによって決まります。キャラクタ・セットがAL32UTF8の場合、1文字当たり最大4バイトが必要になる可能性があるため、CHARの長さは、キャラクタ・セットに応じて2075から8300の範囲に制限されます。

長さが0(ゼロ)の空の文字列を列に挿入すると、SQLのNULL値が挿入されます。この処理は、Oracle型モードでのみ有効です。

TT_CHARデータは、後続の空白を使用して列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。

TT_DECIMAL[(p[,s])]

固定の最大精度(総桁数)とスケール(小数点の右側の桁数)を定義した正確な数値。精度pには1から40を指定します。スケールには0からpを指定します。精度のデフォルト値は40、スケールのデフォルト値は0です。

TT_DECIMALではなくNUMBERデータ型を使用します。NUMBERはより高いパフォーマンスを提供します。

TT_NCHAR[(n)]

n×2バイトのUnicode文字の固定長文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。NCHARの文字の制限はバイトの制限の2分の1であるため、最大サイズは4150です。

長さが0(ゼロ)の空の文字列を列に挿入すると、SQLのNULL値が挿入されます。この処理は、Oracle型モードでのみ有効です。

TT_NCHARデータは、U+0020 SPACEを使用してその列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。

TT_NVARCHAR(n)

n×2バイトのUnicode文字の可変長文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。TT_NVARCHARの文字の制限はバイトの制限の2分の1であるため、最大サイズは2,097,152(221)です。nを指定する必要があります。

長さが0(ゼロ)の空の文字列を列に挿入すると、SQLのNULL値が挿入されます。この処理は、Oracle型モードでのみ有効です。

空白埋め比較セマンティクスが使用されます。

TT_VARCHAR (n [BYTE|CHAR])

最大長がnバイトまたはn文字の可変長文字列。nを指定する必要があります。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上4194304(222)バイト以下です。

CHARは、列に文字長セマンティクスが使用されていることを示します。

長さが0(ゼロ)の空の文字列を列に挿入すると、SQLのNULL値が挿入されます。この処理は、Oracle型モードでのみ有効です。

空白埋め比較セマンティクスが使用されます。


TimesTen型のマッピング

表1-4の左側の列に示されているデータ型の名前は、以前のリリースのTimesTenで存在していたデータ型です。 TypeModeが0(デフォルト)に設定され、Oracle型モードを示している場合は、データ型の名前がOracle型モードで新しい名前に変更される可能性があります。 (Oracle型モードでのデータ型名は右側の列に示されています。)この表では、左側の列のデータ型から右側の列の対応するデータ型へのマッピングを示します。

表1-4 データ型のマッピング: TimesTenデータ型からOracle型モードのTimesTenデータ型

TimesTenデータ型 Oracle型モードでのTimesTenデータ型

BIGINT

TT_BIGINT

Oracle型モードでは、TT_BIGINTを指定します。 TT_BIGINTの詳細は、「データ型の仕様」を参照してください。

BINARY (n)

BINARY (n)

Oracle型モードで、このデータ型は同じ名前を使用します。 BINARY (n)の詳細は、「データ型の仕様」を参照してください。

CHAR[ACTER][(n)]

TT_CHAR [(n [BYTE|CHAR])]

Oracle型モードでは、TT_CHARを指定します。文字セマンティクスがサポートされています。 TT_CHAR型の詳細は、「Oracle型モードでの下位互換用にサポートされている型」を参照してください。

DATE

TT_DATE

Oracle型モードでは、TT_DATEを指定します。 TT_DATEの詳細は、「データ型の仕様」を参照してください。

DEC[IMAL][(p[,s])]または

NUMERIC[(p[,s])]

TT_DECIMAL[(p[,s])]

Oracle型モードでは、TT_DECIMALを指定します。

TT_DECIMALの詳細は、「Oracle型モードでの下位互換用にサポートされている型」を参照してください。

DOUBLE [PRECISION]または

FLOAT [(53)]

BINARY_DOUBLE

Oracle型モードでは、BINARY_DOUBLEを指定します。 BINARY_DOUBLEの詳細は、「データ型の仕様」を参照してください。

INT[EGER]

TT_INT[EGER]

Oracle型モードでは、TT_INTEGERを指定します。 TT_INTEGERの詳細は、「データ型の仕様」を参照してください。

INTERVAL IntervalQualifier

INTERVAL IntervalQualifier

Oracle型モードで、このデータ型は同じ名前を使用します。 INTERVALの詳細は、「データ型の仕様」を参照してください。

NCHAR [(n)]

TT_NCHAR[(n)]

Oracle型モードでは、TT_NCHARを指定します。 TT_NCHARの詳細は、「Oracle型モードでの下位互換用にサポートされている型」を参照してください。

NVARCHAR (n)

TT_NVARCHAR(n)

Oracle型モードでは、TT_NVARCHARを指定します。 TT_NVARCHARの詳細は、「Oracle型モードでの下位互換用にサポートされている型」を参照してください。

REALまたは

FLOAT (24)

BINARY_FLOAT

Oracle型モードでは、BINARY_FLOATを指定します。 BINARY_FLOATの詳細は、「データ型の仕様」を参照してください。

SMALLINT

TT_SMALLINT

Oracle型モードでは、TT_SMALLINTを指定します。 TT_SMALLINTの詳細は、「データ型の仕様」を参照してください。

TIME

TIME

Oracle型モードで、このデータ型は同じ名前を使用します。 TIMEの詳細は、「データ型の仕様」を参照してください。

TIMESTAMP

TT_TIMESTAMP

Oracle型モードでは、TT_TIMESTAMPを指定します。 TT_TIMESTAMPの詳細は、「データ型の仕様」を参照してください。

TINYINT

TT_TINYINT

Oracle型モードでは、TT_TINYINTを指定します。 TT_TINYINTの詳細は、「データ型の仕様」を参照してください。

VARBINARY (n)

VARBINARY (n)

Oracle型モードで、このデータ型は同じ名前を使用します。 VARBINARY (n)の詳細は、「データ型の仕様」を参照してください。

VARCHAR (n)

TT_VARCHAR (n [BYTE|CHAR])

Oracle型モードでは、TT_VARCHARを指定します。文字セマンティクスがサポートされています。 TT_VARCHARの詳細は、「Oracle型モードでの下位互換用にサポートされている型」を参照してください。


文字データ型

文字データ型は、文字(英数字)データをデータベース・キャラクタ・セットまたはUTF-16書式で格納します。

文字データはバイト値を使用する文字列に格納されます。バイト値は、データ・ストア作成時に定義されるデータ・ストア・キャラクタ・セットのいずれかに対応しています。シングルバイト・キャラクタ・セットとマルチバイト・キャラクタ・セットの両方がサポートされています。

キャラクタ・タイプは、次のとおりです。

CHAR

CHAR型は、固定長文字列を指定します。 CHAR列に値を挿入する際、定義されている列長よりその値が短い場合は、列長にあわせてTimesTenの空白文字が埋め込まれます。CHAR列に値を挿入する際に、その値が定義されている列長より長い場合は、エラーが戻されます。

デフォルトでは、列長はバイトで定義されます。CHAR修飾子を使用し、列長を文字で定義します。文字のサイズは、データベース・キャラクタ・セットに応じて1バイトから4バイトの範囲になります。BYTE修飾子およびCHAR修飾子は、NLS_LENGTH_SEMANTICSパラメータ設定より優先されます。 NLS_LENGTH_SEMANTICSの詳細は、「ALTER SESSION」および『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のグローバリゼーション・サポート属性の設定に関する項を参照してください。


注意:

CHAR型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_CHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。CHARとTT_CHARの両方で、空白埋め比較セマンティクスが使用されます。 TT_CHAR型は下位互換用にサポートされています。

次の例では、表を作成します。列は型CHARおよびTT_CHARを使用して定義されます。これらの型では、空白埋め比較セマンティクスが使用されます。

Command> CREATE TABLE typedemo (name CHAR (20), nnme2 TT_CHAR (20));
Command> INSERT INTO typedemo VALUES ('SMITH     ','SMITH     ');
1 row inserted.
Command> DESCRIBE typedemo;
Table USER.TYPEDEMO:
  Columns:
    NAME                            CHAR (20)
    NAME2                           TT_CHAR (20)
1 table found.
(primary key columns are indicated with *)
Command> SELECT * FROM typedemo;
< SMITH     , SMITH      >
1 row found.
Command> # Expect 1 row found; blank-padded comparison semantics
Command> SELECT * FROM typedemo WHERE name = 'SMITH';
< SMITH     , SMITH      >
1 row found.
Command> SELECT * FROM typedemo WHERE name2 = 'SMITH';
< SMITH     , SMITH      >
1 row found.
Command> # Expect 0 rows; blank padded comparison semantics.
Command> SELECT * FROM typedemo WHERE name > 'SMITH';
0 rows found.
Command> SELECT * FROM typedemo WHERE name2 > 'SMITH';
0 rows found.

次の例では、表typedemoを変更し、列name3を追加します。 列name3は、文字セマンティクスで定義されます。

Command> ALTER TABLE typedemo ADD COLUMN name3 CHAR (10 CHAR);
Command> DESCRIBE typedemo;
Table USER.TYPEDEMO:
  Columns:
    NAME                            CHAR (20)
    NAME2                           TT_CHAR (20)
    NAME3                           CHAR (10 CHAR)
1 table found.

NCHAR

NCHARデータ型は、2バイトのUnicode文字の固定長文字列です。NCHARデータ型は、Unicodeの空白文字U+0020 SPACEを使用して指定した長さまで調整されます。空白埋め比較セマンティクスが使用されます。


注意:

NCHAR型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_NCHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。NCHARとTT_NCHARの両方で、空白埋め比較セマンティクスが使用されます。 TT_NCHAR型は下位互換用にサポートされています。

次の例では、ALTERを使用して表typedemoを変更し、列Name4を追加します。データ型はNCHARです。

Command> ALTER TABLE typedemo ADD COLUMN Name4 NCHAR (10);
Command> DESCRIBE typedemo;

Table USER.TYPEDEMO:
  Columns:
    NAME                            CHAR (20)
    NAME2                           TT_CHAR (20)
    NAME3                           CHAR (10 CHAR)
    NAME4                           NCHAR (10)
1 table found.

VARCHAR2

VARCHAR2データ型は、可変長文字列を指定します。VARCHAR2列を定義する場合は、バイトまたは文字の最大数を定義します。各値は指定したとおりに格納されます。この値が列の最大長を超えることはできません。

最大長を指定する必要があります。最小値は1バイト以上である必要があります。文字の最大長を指定するには、CHAR修飾子を使用します。たとえば、VARCHAR2 (10 CHAR)です。

文字のサイズは、データベース・キャラクタ・セットに応じて1バイトから4バイトの範囲になります。BYTE修飾子およびCHAR修飾子は、NLS_LENGTH_SEMANTICSパラメータ設定より優先されます。 NLS_LENGTH_SEMANTICSの詳細は、「ALTER SESSION」および『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のグローバリゼーション・サポート属性の設定に関する項を参照してください。

NULL値は、NULL値可能なフィールドごとに、タプル内の単一ビットとして格納されます。 32ビットのプラットフォームでは、値がNULLのNOT INLINE VARCHAR2(n)は(nullビット)+4バイトの記憶域を使用します。値がNULLのINLINE VARCHAR2(n)は(nullビット)+4バイト+nバイト、つまり値がNULLのNOT INLINE VARCHAR2(n)よりもnバイト多い記憶域を使用します。 この記憶域の原則は、すべての可変長データ型(TT_VARCHAR、TT_NVARCHAR、VARCHAR2、NVARCHAR2、VARBINARY)に適用されます。


注意:

VARCHARデータ型は使用しないでください。 VARCHAR2を使用してください。 これら2つの型は現在同じ意味で使用されていますが、VARCHARデータ型は、別のセマンティクスを使用する別のデータ型として再定義される予定です。


注意:

VARCHAR2型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_VARCHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。 VARCHAR2では非空白埋め比較セマンティクスが使用されます。 TT_VARCHARでは空白埋め比較セマンティクスが使用されます。 TT_VARCHAR型は下位互換用にサポートされています。

次の例では、表typedemoを変更し、列name5およびname6を追加します。 name5はVARCHAR2型で、name6はTT_VARCHARで定義されます。 この例では、列name5での非空白埋め比較セマンティクスの使用方法および列name6での空白埋め比較セマンティクスの使用方法が示されています。

Command> ALTER TABLE typedemo ADD COLUMN name5 VARCHAR2 (20);
Command> ALTER TABLE typedemo ADD COLUMN name6 TT_VARCHAR (20);
Command> DESCRIBE typedemo;
Table USER.TYPEDEMO:
  Columns:
    NAME                            CHAR (20)
    NAME2                           TT_CHAR (20)
    NAME3                           CHAR (10 CHAR)
    NAME4                           NCHAR (10)
    NAME5                           VARCHAR2 (20) INLINE
    NAME6                           TT_VARCHAR (20) INLINE
1 table found.
(primary key columns are indicated with *)
Command> #Insert SMITH followed by 5 spaces into all columns
Command> INSERT INTO typedemo VALUES
> ('SMITH     ', 'SMITH     ', 'SMITH     ', 'SMITH     ','SMITH     ', 'SMITH');
1 row inserted.
Command> # Expect 0; Nonpadded comparison semantics
Command> SELECT COUNT (*) FROM typedemo WHERE name5 = 'SMITH';
< 0 >
1 row found.
Command> # Expect 1; Blank-padded comparison semantics
Command> SELECT COUNT (*) FROM typedemo WHERE name6 = 'SMITH';
< 1 >
1 row found.
Command> # Expect 1; Nonpadded comparison semantics
Command> SELECT COUNT (*) FROM typedemo WHERE name5 > 'SMITH';
< 1 >
1 row found.
Command> # Expect 0; Blank-padded comparison semantics
Command> SELECT COUNT (*) FROM typedemo WHERE name6 > 'SMITH';
< 0 >
1 row found.

NVARCHAR2

NVARCHAR2データ型は、2バイトのUnicode文字の可変長文字列です。NVARCHAR2列を定義する場合は、文字の最大数を定義します。各値は指定したとおりに格納されます。この値が列の最大長を超えることはできません。長さを指定する必要があります。


注意:

NVARCHAR2型を使用すると、長さが0(ゼロ)の文字列はNULLとして解釈されます。TT_NVARCHAR型を使用すると、長さが0(ゼロ)の文字列は、NULL以外の有効な値となります。 NVARCHAR2では非空白埋め比較セマンティクスが使用されます。 TT_NVARCHARでは空白埋め比較セマンティクスが使用されます。 TT_NVARCHAR型は下位互換用にサポートされています。

次の例では、表typedemoを変更し、列name7を追加します。データ型はNVARCHAR2です。

Command> ALTER TABLE typedemo ADD COLUMN Nnme7 NVARCHAR2 (20);
Command> DESCRIBE typedemo;
Table USER1.TYPEDEMO:
  Columns:
    NAME                            CHAR (20)
    NAME2                           TT_CHAR (20)
    NAME3                           CHAR (10 CHAR)
    NAME4                           NCHAR (10)
    NAME5                           VARCHAR2 (20) INLINE
    NAME6                           TT_VARCHAR (20) INLINE
    NAME7                           NVARCHAR2 (20) INLINE
1 table found.

数値データ型

数値型では、正および負の固定小数点数と浮動小数点数、0(ゼロ)、無限大、および演算での未定義の結果として生成される値(NaN(非数))が格納されます。

正確な数値型と近似値型のデータ型

TimesTenは、正確な数値型と近似値型の両方のデータ型をサポートします。算術演算は数値型に対してのみ実行できます。同様に、SUM集計およびAVG集計でも数値型が必要になります。

正確な数値型は、次のとおりです。

近似値型は、次のとおりです。

NUMBER

NUMBERデータ型は、1.0 x 10-130から1.0 x 10126未満の絶対値を含む正と負の固定数値および0(ゼロ)を格納します。 各NUMBER値には、5から22バイトが必要です。

固定小数点数はNUMBER (p,s)として指定します。

  • pは精度(有効な10進数の総桁数)です。最上位桁は最も左にあるゼロ以外の桁で、最下位桁は最も右の既知の桁です。

  • sはスケール(小数点から最下位桁までの桁数)です。スケールは-84から127の範囲です。

    • 正のスケールは、小数点の右側にある最下位桁まで(最下位桁も含む)の有効桁数です。

    • 負のスケールは、小数点の左側にある最下位桁まで(最下位桁を含まない)の有効桁数です。負のスケールの場合、最下位桁は小数点の左側にあります。これは、数値が小数点の左側の指定桁数で丸められるためです。

スケールは、精度より大きくできます。たとえば、E表記法があります。スケールが精度より大きい場合、精度は小数点の右側の最大有効桁数を指定します。 たとえば、列をNUMBER (4,5)型として定義し、その列に.000127を挿入すると、その値は.00013として格納されます。 小数点の後の最初の桁には0(ゼロ)が必要で、小数点の右側の5番目の桁より後ろの値は丸められます。

値が精度を超えると、エラーが戻されます。値がスケールを超えると、その値は丸められます。

NUMBER (p)は、精度pおよびスケール0の固定小数点数を表すため、NUMBER (p,0)と同じです。

浮動小数点数はNUMBERとして指定してください。精度およびスケールを指定しない場合は、最大精度および最大スケールが使用されます。

次の例では、表numericsを変更し、異なる精度とスケールを指定したNUMBERデータ型で定義したcol6col7col8およびcol9の各列を追加します。

Command> ALTER TABLE numerics ADD col6 NUMBER;
Command> ALTER TABLE numerics ADD col7 NUMBER (4,2);
Command> ALTER TABLE numerics ADD col8 NUMBER (4,-2);
Command> ALTER TABLE numerics ADD col8 NUMBER (2,4);
Command> ALTER TABLE numerics ADD col9 NUMBER (2,4);
Command> DESCRIBE numerics;
Table USER1.NUMERICS:
  Columns:
    COL1                            TT_TINYINT
    COL2                            TT_SMALLINT
    COL3                            TT_INTEGER
    COL4                            TT_INTEGER
    COL5                            TT_BIGINT
    COL6                            NUMBER
    COL7                            NUMBER (4,2)
    COL8                            NUMBER (4,-2)
    COL9                            NUMBER (2,4)
1 table found.
(primary key columns are indicated with *)

次の例では、表numbercomboを作成し、異なる精度とスケールを指定したNUMBERデータ型で列を定義します。値123.89が列に挿入されます。

Command> CREATE TABLE numbercombo (col1 NUMBER, col2 NUMBER (3), col3 NUMBER (6,2), col4 NUMBER (6,1), col5 NUMBER (6,-2));
Command> DESCRIBE numbercombo;
Table USER1.NUMBERCOMBO:
  Columns:
    COL1                            NUMBER
    COL2                            NUMBER (3)
    COL3                            NUMBER (6,2)
    COL4                            NUMBER (6,1)
    COL5                            NUMBER (6,-2)
1 table found.
(primary key columns are indicated with *)
Command> INSERT INTO numbercombo VALUES (123.89,123.89,123.89,123.89,123.89);
1 row inserted.
Command> VERTICAL ON;
Command> SELECT * FROM numbercombo;
COL1:   123.89
  COL2:   124
  COL3:   123.89
  COL4:   123.9
  COL5:   100
1 row found.

次の例では、表を作成し、NUMBER (4,2)データ型で列を定義します。 値123.89を挿入しようとすると、オーバーフローのエラーになります。

Command> CREATE TABLE invnumbervalue (col6 NUMBER (4,2));
Command> INSERT INTO invnumbervalue VALUES (123.89);
 2923: Number type value overflow
The command failed.

次の例では、表を作成し、精度より大きいスケールを使用したNUMBERデータ型で列を定義します。値が列に挿入されます。

Command> CREATE TABLE numbercombo2 (col1 NUMBER (4,5), col2 NUMBER (4,5), col3 NUMBER (4,5), col4 NUMBER (2,7), col5 NUMBER (2,7), col6 NUMBER (2,5), col7 NUMBER (2,5));
Command> INSERT INTO numbercombo2 VALUES (.01234, .00012, .000127, .0000012, .00000123, 1.2e-4, 1.2e-5);
1 row inserted.
Command> DESCRIBE numbercombo2;
Table USER1.NUMBERCOMBO2:
  Columns:
    COL1                            NUMBER (4,5)
    COL2                            NUMBER (4,5)
    COL3                            NUMBER (4,5)
    COL4                            NUMBER (2,7)
    COL5                            NUMBER (2,7)
    COL6                            NUMBER (2,5)
    COL7                            NUMBER (2,5)
1 table found.

(primary key columns are indicated with *)
Command> SELECT * FROM numbercombo2;
COL1:   .01234
  COL2:   .00012
  COL3:   .00013
  COL4:   .0000012
  COL5:   .0000012
  COL6:   .00012
  COL7:   .00001
1 row found.

TT_BIGINT

TT_BIGINTデータ型は、-9,223,372,036,854,775,808(-263)から9,223,372,036,854,775,807(263-1)の範囲の符号付き整数です。このデータ型で必要な記憶域は8バイトであるため、NUMBERデータ型よりサイズが小さくなります。また、NUMBERデータ型より高いパフォーマンスを提供します。BIGINTは指定できません。

次の例では、表numericsを変更し、BIGINTデータ型でcol5を追加します。エラーが生成されます。 2つ目のALTER TABLEによって、TT_BIGINTデータ型でcol5が追加されます。

Command> ALTER TABLE numerics ADD COLUMN col5 BIGINT;
 3300: BIGINT is not a valid type name; use TT_BIGINT instead
The command failed.
Command> ALTER TABLE numerics ADD COLUMN col5 TT_BIGINT;
Command> DESCRIBE numerics;
Table USER1.NUMERICS:
  Columns:
    COL1                            TT_TINYINT
    COL2                            TT_SMALLINT
    COL3                            TT_INTEGER
    COL4                            TT_INTEGER
    COL5                            TT_BIGINT
1 table found.
(primary key columns are indicated with *)

TT_INTEGER

TT_INTEGERデータ型は、-2,147,483,648(-231)から2,147,483,647(231 -1)の範囲の符号付き整数です。このデータ型で必要な記憶域は4バイトであるため、NUMBERデータ型よりサイズが小さくなります。また、NUMBERデータ型より高いパフォーマンスを提供します。TT_INTEGERのかわりにTT_INTを指定できます。INTEGERまたはINTを指定すると、これらの型はNUMBER (38)にマップされます。

次の例では、表numericsを変更し、INTデータ型でcol3を追加します。 表の詳細は、データ型がNUMBER (38)であることを示します。col3が削除されます。 2つ目のALTER TABLEによって、INTEGERデータ型でcol2が追加されます。 表の詳細は、データ型がNUMBER (38)であることを示します。col3が削除されます。 次に、col3およびcol4がTT_INTEGERおよびTT_INTデータ型で追加されます。 表の詳細は、データ型がTT_INTEGERであることを示します。

Command> ALTER TABLE numerics ADD col3 INT;
Command> DESCRIBE numerics;
Table USER1.NUMERICS:
  Columns:
    COL1                            TT_TINYINT
    COL2                            TT_SMALLINT
    COL3                            NUMBER (38)
1 table found.
(primary key columns are indicated with *)
Command> ALTER TABLE numerics DROP col3;
Command> ALTER TABLE numerics ADD col3 INTEGER;
Command> DESCRIBE numerics;
Table USER1.NUMERICS:
Columns:
    COL1                            TT_TINYINT
    COL2                            TT_SMALLINT
    COL3                            NUMBER (38)
1 table found.
(primary key columns are indicated with *)
Command> ALTER TABLE numerics DROP col3;
Command> ALTER TABLE numerics ADD COLUMN col3 TT_INTEGER;
Command> DESCRIBE numerics;
Table USER1.NUMERICS:
Columns:
    COL1                            TT_TINYINT
    COL2                            TT_SMALLINT
    COL3                            TT_INTEGER
1 table found.
(primary key columns are indicated with *)
Command> ALTER TABLE numerics ADD col4 TT_INT;
Command> DESCRIBE numerics;
Table USER1.NUMERICS:
Columns:
    COL1                            TT_TINYINT
    COL2                            TT_SMALLINT
    COL3                            TT_INTEGER
    COL4                            TT_INTEGER
1 table found.
(primary key columns are indicated with *)

TT_SMALLINT

TT_SMALLINTデータ型は、-32,768(-215)から32,767(215 - 1)の範囲の符号付き整数です。このデータ型で必要な記憶域は2バイトであるため、NUMBERデータ型よりサイズが小さくなります。また、NUMBERデータ型より高いパフォーマンスを提供します。SMALLINTデータ型は、定義することはできますが、NUMBER (38)にマップされます。

次の例では、表numericsを変更し、SMALLINTデータ型でcol2を追加します。 表の詳細は、データ型がNUMBER (38)であることを示します。col2が削除されます。 2つ目のALTER TABLEによって、TT_SMALLINTデータ型でCol2が追加されます。

Command> ALTER TABLE numerics ADD COLUMN col2 SMALLINT;
Command> DESCRIBE Numerics;
Table USER1.NUMERICS:
  Columns:
    COL1                            TT_TINYINT
    COL2                            NUMBER (38)
1 table found.
(primary key columns are indicated with *)
Command> ALTER TABLE numerics DROP COLUMN col2;
Command> ALTER TABLE numerics ADD COLUMN col2 TT_SMALLINT;
Command> DESCRIBE NUMERICS;
Table USER1.NUMERICS:
  Columns:
    COL1                            TT_TINYINT
    COL2                            TT_SMALLINT
1 table found.
(primary key columns are indicated with *)

TT_TINYINT

TT_TINYINTデータ型は、0から255(28-1)の範囲の符号なし整数です。このデータ型で必要な記憶域は1バイトであるため、NUMBERデータ型よりサイズが小さくなります。また、NUMBERデータ型より高いパフォーマンスを提供します。TT_TINYINTを否定するデータ型はTT_SMALLINTです。また、TINYINTを指定することはできません。

次の例では、col1という列をデータ型TINYINTで定義するnumericsという表を最初に作成します。 エラーが戻されます。 列がデータ型TT_TINYINTで再定義されます。

Command> CREATE TABLE numerics (col1 TINYINT);
 3300: TINYINT is not a valid type name; use TT_TINYINT instead
The command failed.
Command> CREATE TABLE numerics (col1 TT_TINYINT);
Command> DESCRIBE numerics;
Table USER1.NUMERICS:
  Columns:
    COL1                            TT_TINYINT
1 table found.
(primary key columns are indicated with *)

浮動小数点数

浮動小数点数には、小数点を含めることも、含めないこともできます。 また、浮動小数点数の範囲は、指数を使用して拡張することができます(たとえば、1.2 e-20などです)。

浮動小数点数ではスケールを使用しません。これは、小数点の後に表示できる桁数が制限されていないためです。

バイナリの浮動小数点数は、バイナリ精度(数字0と1)を使用して格納されます。NUMBERデータ型の場合は、10進数の精度(数字0から9)を使用して格納されます。

NUMBERでサポートされている範囲と精度内にあるリテラル値は、NUMBERとして格納されます。これは、リテラルが10進数の精度を使用して表されるためです。

BINARY_DOUBLE

BINARY_DOUBLEは、64ビットの倍精度の浮動小数点数です。

BINARY_FLOATおよびBINARY_DOUBLEはいずれも、特別な値であるInf、-InfおよびNaN(非数)をサポートし、IEEE標準に準拠しています。

浮動小数点数の制限は次のとおりです。

  • BINARY_FLOAT

    • 正の最小有限値: 1.17549E-38F

    • 正の最大有限値: 3.40282E+38F

  • BINARY_DOUBLE

    • 正の最小有限値: 2.22507485850720E-308

    • 正の最大有限値: 1.79769313486231E+308

次の例では、表を作成し、BINARY_FLOATおよびBINARY_DOUBLEデータ型で2つの列を定義します。

Command> CREATE TABLE BfBd (Col1 BINARY_FLOAT, Col2 BINARY_DOUBLE);
Command> DESCRIBE BfBd;
Table UISER1.BFBD:
  Columns:
    COL1                            BINARY_FLOAT
    COL2                            BINARY_DOUBLE
1 table found.
(primary key columns are indicated with *)
BINARY_FLOAT

BINARY_FLOATは、32ビットの単精度の浮動小数点数です。

FLOATおよびFLOAT (n)

TimesTenでは、ANSI型FLOATもサポートされています。FLOATは正確な数値型で、NUMBER型として実装されます。数値nは、値が格納できる精度のビット数を示します。値の範囲は1から126です。バイナリ精度から10進数の精度に変換するには、nに0.30103を乗算します。10進数の精度からバイナリ精度に変換するには、10進数の精度に3.32193を乗算します。バイナリ精度の最大値126桁は、10進数の精度では約38桁に相当します。

BINARYデータ型およびVARBINARYデータ型

BINARYデータ型は長さがnバイトの固定長バイナリの値です。 nの値の範囲は1から8300バイトです。BINARYデータ型にはnバイトの記憶域が必要です。データは後続の0(ゼロ)を使用してその列の最大長まで調整されます。ゼロ埋め比較セマンティクスが使用されます。

VARBINARYデータ型は最大長がnバイトの可変長バイナリの値です。 nの値の範囲は1から4,194,304(222)バイトです。

次の例では、表を作成し、2つの列を定義します。 col1はBINARYデータ型、col2はVARBINARYデータ型で定義されます。

Command> CREATE TABLE bvar (col1 BINARY (10), col2 VARBINARY (10));
Command> DESCRIBE bvar;
Table USER1.BVAR:
  Columns:
    COL1                            BINARY (10)
    COL2                            VARBINARY (10) INLINE
1 table found.
(primary key columns are indicated with *)

数値の優先順位

式の結果の型は、型の優先順位が最も高いオペランドによって決定されます。 たとえば、TT_INTEGER型とBINARY_FLOAT型の合計は、BINARY_FLOAT型になります。これは、BINARY_FLOATの方がTT_INTEGERより数値の優先順位が高く設定されているためです。同様に、NUMBER型とBINARY_DOUBLE型の積はBINARY_DOUBLE型になります。これは、BINARY_DOUBLE型の優先順位がNUMBER型より高いためです。

数値の優先順位は次のとおりです(高い順位から低い順位へ)。

ROWIDデータ型

表またはマテリアライズド・ビューの行のアドレスは、行ID(ROWID)と呼ばれます。 行IDのデータ型はROWIDです。ROWIDは、ROWID擬似列を問い合せることで確認できます。 「ROWIDの指定」を参照してください。

SQL文では、リテラルのROWID値は一重引用符で囲んだ定数として指定してください。次に例を示します。

Command> SELECT ROWID, last_name
       > FROM employees
       > WHERE ROWID='BMUFVUAAABTAAAAFi8';
< BMUFVUAAABTAAAAFi8, Hartstein >
1 row found.

ROWIDデータ型は次のように使用できます。

暗黙的な型変換は、値の割当てと、ROWIDデータとCHARデータ間またはROWIDデータとVARCHAR2データ間の比較処理でサポートされています。

CHAR、VARCHAR2およびROWIDのオペランドがCASECOALESCEDECODEまたはNVL式で組み合せて使用されている場合、結果のデータ型はROWIDになります。 CHAR値およびVARCHAR2値を使用した式は、ROWID値に変換されて式が評価されます。

CONCATなどの文字列関数でROWID値を使用するには、アプリケーションでTO_CHAR関数を使用してROWID値を明示的にCHAR値に変換する必要があります。

日時データ型

日時データ型は、次のとおりです。

DATE

DATE値の書式はYYYY-MM-DD HH:MI:SSで、範囲は-4712-01-01(紀元前4712年1月1日)から9999-12-31(西暦9999年12月31日)です。小数秒はありません。DATE型では7バイトの記憶域が必要です。

TimesTenでは、ユーザー指定のNLS_DATE_FORMAT設定はサポートされていません。SQLのTO_CHARおよびTO_DATE関数を使用すると、その他の書式を指定できます。

TIME

TIME値の書式はHH:MI:SSで、範囲は00:00:00(午前0時)から23:59:59(午後11時59分59秒)です。TIMEデータ型では8バイトの記憶域が必要です。

TIMESTAMP

TIMESTAMP値の書式は、YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]です。小数秒の精度の範囲は0から9で、デフォルトは6です。日付範囲は-4712-01-01(紀元前4712年1月1日)から9999-12-31(西暦9999年12月31日)です。TIMESTAMP型では12バイトの記憶域が必要です。TIMESTAMP型は、TT_TIMESTAMPデータ型より日付範囲が広く、TT_TIMESTAMP型より高い精度をサポートしています。

TimesTenでは、ユーザー指定のNLS_TIMESTAMP_FORMAT設定はサポートされていません。SQLのTO_CHARおよびTO_DATE関数を使用すると、その他の書式を指定できます。

TT_DATE

TT_DATE値の書式はYYYY-MM-DDで、範囲は1753-01-01(1753年1月1日)から9999-12-31(西暦9999年12月31日)です。TT_DATEデータ型では4バイトの記憶域が必要です。

TT_TIMESTAMP

TT_TIMESTAMP値の書式は、YYYY-MM-DD HH:MI:SS [.FFFFFF]です。 小数秒の精度は6です。範囲は1753-01-01 00:00:00(1753年1月1日の午前0時)から9999-12-31 23:59:59(9999年12月31日の午後11時59分59秒)です。TT_TIMESTAMP型では8バイトの記憶域が必要です。TT_TIMESTAMPは、TIMESTAMPデータ型より高速で、TIMESTAMP型より記憶域サイズが小さくなります。

TimesTenの時間隔

この項の内容は次のとおりです。

INTERVALデータ型の使用

TimesTen型モードを使用している場合、INTERVALの詳細は、TimesTenの以前のリリースのドキュメントを参照してください。

TimesTenの時間隔型は、定数で指定する場合と式の中間結果を表す場合でのみ使用できます。時間隔型を最終結果にすることはできません。列にINTERVAL型を定義することはできません。 「データ型の仕様」を参照してください。

単一フィールドの時間隔リテラルを式に指定することはできますが、時間隔データ型を戻す完全な式は指定できません。

TimesTenでは、次の形式の時間隔リテラルがサポートされています。

INTERVAL [+\-] CharString IntervalQualifier

DATEデータ型およびTIMEデータ型の使用

この項では、DATE、TIME、TIMESTAMPの各データ型の例を示します。

DATEデータ型のdcol列とTIMEデータ型のtcol列の両方を含む、sampleという名前の表を作成する構文は、次のとおりです。

CREATE TABLE sample (tcol TIME, dcol DATE);

sample表にDATEとTIMEの値を挿入する構文は、次のとおりです。

INSERT INTO sample VALUES (TIME '12:00:00', DATE '1998-10-28');

sample表の、1998年10月29日の正午から午後4時までの行をすべて選択する構文は、次のとおりです。

SELECT * FROM sample
WHERE dcol = DATE '1998-10-29'
AND tcol BETWEEN TIME '12:00:00' AND TIME '16:00:00';

TIMESTAMPデータ型のtscol列を含む、sample2という名前の表を作成して、1998年10月29日の正午から午後4時までの行をすべて選択するには、次の文を使用します。

CREATE TABLE sample2 (tscol TIMESTAMP);
INSERT INTO sample2 VALUES (TIMESTAMP '1998-10-28 12:00:00');
SELECT * FROM sample2
WHERE tscol
BETWEEN TIMESTAMP '1998-10-29 12:00:00'
AND '1998-10-29 16:00:00';

注意:

TIME、DATE、TIMESTAMPデータ型については、リテラルと文字列の両方の書式を使用できます。 たとえばTIMEの値は、timestring ('12:00:00')およびtimeliteral (TIME '16:00:00')の両方の書式で指定できます。TimesTenでは、最初の値をCHARとして読み取り、後で必要に応じてTIMEに変換します。2番目の値はTIMEとして読み取ります。前述の例では、リテラル書式を使用しています。 マイクロ秒に満たない端数は、「Data truncated」エラーになります。

タイムゾーンの変換処理

TimesTenでは、TIMEZONEはサポートされていません。 TIMEおよびTIMESTAMPデータ型の値は、時差を調整せずに保存されます。 このためアプリケーションでは、値をデータベースに送信する前に特定のタイムゾーンを設定して、TIMEおよびTIMESTAMPをそのタイムゾーンの時刻に変換する必要があります。 たとえば、あるアプリケーションでタイムゾーンに太平洋標準時を設定している場合に、太平洋夏時間や東部夏時間または東部標準時のTIMEおよびTIMESTAMPの値を使用するには、アプリケーションでTIMEおよびTIMESTAMPを太平洋標準時に変換する必要があります。

算術演算における日時データ型および時間隔データ型

TimesTen型モードを使用している場合、算術演算での日時型および時間隔型の詳細は、TimesTenの以前のリリースのドキュメントを参照してください。

日時型は、DATEデータ型、TIMEデータ型およびTIMESTAMPデータ型を指します。日付および時刻の算術は、次の構文でサポートされています。

  • TimeVal1 - TimeVal2TimestampVal1 - TimestampVal2またはDateVal1 - DateVal2: 差をINTERVAL DAY TO SECONDで戻します。

  • TT_DateVal1 - TT_DateVal2 : 日数の差を整数として戻します。

  • DateTimeVal {+|-} IntervalVal

  • IntervalVal + DateTimeVal

  • IntervalVal1 {+|-} IntervalVal2

  • IntervalVal {*|/} NumericVal

  • NumericVal * IntervalVal

INTERVALデータ型は、完結した式の最終結果には使用できません。 この時間隔の結果から必要な要素を抽出するには、EXTRACT関数を使う必要があります。

次の表に、各演算結果のデータ型を示します。

オペランド1 演算子 オペランド2 結果のデータ型
TIME |

DATE |

TIMETAMP

- TIME |

DATE |

TIMESTAMP

INTERVAL DAY TO SECOND
TT_DATE - TT_DATE TT_BIGINT(日数)
日時 +または- INTERVAL 日時
INTERVAL +
日時 日時
INTERVAL +または- INTERVAL INTERVAL
INTERVAL *または/ 数値 INTERVAL
数値 *
INTERVAL INTERVAL

SELECT tt_date1 - tt_date2 FROM t1;
SELECT EXTRACT(DAY FROM timestamp1-timestamp2) FROM t1;
SELECT * FROM t1 WHERE timestamp1 - timestamp2 = NUMTODSINTERVAL(10, 'DAY');
SELECT SYSDATE + NUMTODSINTERVAL(20,'SECOND') FROM dual;
SELECT EXTRACT (SECOND FROM timestamp1-timestamp2) FROM dual;
/* select the microsecond difference between two timestamp values d1 and d2 */
SELECT 1000000*(EXTRACT(DAY FROM d1-d2)*24*3600+
EXTRACT(HOUR FROM d1-d2)*3600+
EXTRACT(MINUTE FROM d1-d2)*60+EXTRACT(SECOND FROM d1-d2)) FROM d1;

この例では、2つの列にタイムスタンプの値を挿入してから、EXTRACT関数を使用してそれらの2つの値を減算します。

Command> CREATE TABLE ts (id TIMESTAMP, id2 TIMESTAMP);
Command> INSERT INTO ts VALUES (TIMESTAMP '2007-01-20 12:45:23', TIMESTAMP '2006-12-25 17:34:22');
1 row inserted.
Command> SELECT EXTRACT (DAY FROM id - id2) FROM ts;
< 25 >
1 row found.

次の問合せでは、エラーが戻されます。 結果がINTERVALとなるSELECT文は実行できません。

SELECT TIMESTAMP1 -TIMESTAMP2 FROM t1;
SELECT DATE1 - DATE2 FROM t1;;

INTERVAL YEAR TO MONTHとINTERVAL DAY TO SECONDは比較できません。

SELECT * FROM t1 WHERE timestamp1 - timestamp2 = NUMTOYMINTERVAL(10, 'YEAR');

INTERVAL DAY TO SECONDとINTERVAL DAYは比較できません。

SELECT * FROM t1 WHERE timestamp1 - timdstamp2 = INTERVAL '10' DAY;

INTERVAL DAY TO SECONDからYEARを抽出することはできません。

SELECT EXTRACT (YEAR FROM timestamp1 - timestamp2) FROM dual;

日時および時間隔の算術演算の制限

日時および時間隔の算術演算を実行する場合、次の制限を考慮してください。

  • INTERVAL YEAR、INTERVAL MONTHに対してDATEおよびTIMESTAMP型を使用した加算または減算の結果は終了しません。 たとえば、DATEまたはTIMESTAMPの2004-02-29に1年を追加すると、2005年2月29日は存在しないため(2005年はうるう年ではありません)、日付算術エラー(TimesTenエラー・メッセージ2787)になります。 INTERVALの1月をDATEの2005-01-30に追加すると、2月に30日はないため同じエラーになります。

  • 結果はINTERVAL DAYに対して終了します。

記憶域要件

宣言された列の長さが128バイトより大きい可変長の列は表外に保存されます。宣言された列の長さが128バイト以下の可変長の列は、表内に保存されます。文字セマンティクスの場合、表外に保存されるバイトの数はキャラクタ・セットによって異なります。 たとえば、文字ごとに4バイトが必要なキャラクタ・セットでは、宣言された列の長さが32(128/4)より大きい可変長の列は表外に保存されます。

表1-5に、データ型別の記憶域要件を示します。

表1-5 データ型別の記憶域要件

データ型 必要な記憶域

BINARY (n)

nバイト。

BINARY_DOUBLE

8バイト。

BINARY_FLOAT

4バイト。

CHAR (n

[BYTE|CHAR])

nバイト、または文字セマンティクスを使用する場合はn文字。文字セマンティクスを使用する場合、列長(n)は、長さセマンティクスとキャラクタ・セットに基づきます。

DATE

7バイト。

INTERVAL

TimesTenでは、INTERVALを格納することはできません。

NCHAR(n)

必要なバイト数は2×nです。nは文字数です。

NUMBER

5から22バイト。

NVARCHAR2 (n)

NOT INLINE列の場合:

32ビット・プラットフォームでは、2×(値の長さ)+20バイト(最小28バイト)。

64ビット・プラットフォームでは、2×(値の長さ)+24バイト(最小40バイト)。

INLINE列の場合:

32ビット・プラットフォームでは、2×(列の長さ)+4バイト。

64ビット・プラットフォームでは、2×(列の長さ)+8バイト。

ROWID

12バイト。

TIMESTAMP

12バイト。

TT_BIGINT

8バイト。

TT_DATE

4バイト。

TT_DECIMAL(p,s)

p/2バイト。

TT_INT[EGER]

4バイト。

TT_SMALLINT

2バイト。

TT_TIME

8バイト。

TT_TIMESTAMP

8バイト。

TT_TINYINT

1バイト。

VARBINARY (n)

NOT INLINE列の場合:

32ビット・プラットフォームでは、値の長さ+20バイト(最小28バイト)。

64ビット・プラットフォームでは、値の長さ+24バイト(最小40バイト)。

INLINE列の場合:

32ビット・プラットフォームでは、列の長さ+4バイト。

64ビット・プラットフォームでは、列の長さ+8バイト。

VARCHAR2(n

[BYTE|CHAR])

NOT INLINE列の場合:

32ビット・プラットフォームでは、値の長さ+20バイト(最小28バイト)。 NULL値は(nullビット)+4バイト、または4.125バイトとして格納されます。

64ビット・プラットフォームでは、値の長さ+24バイト(最小40バイト)。 NULL値は(nullビット)+8バイト、または8.125バイトとして格納されます。

この記憶域の原則は、すべての可変長のNOT INLINEデータ型(TT_VARCHAR、TT_NVARCHAR、VARCHAR2、NVARCHAR2、VARBINARY)に適用されます。

INLINE列の場合:

32ビット・プラットフォームでは、n+4バイト。 NULL値は(nullビット)+n+4バイトとして格納されます。

64ビット・プラットフォームでは、n+8バイト。 NULL値は(nullビット)+n+8バイトとして格納されます。

文字セマンティクスを使用する場合、列長(n)は、長さセマンティクスとキャラクタ・セットに基づきます。


データ型比較ルール

この項では、TimesTenで各データ型の値を比較する方法について説明します。

数値

大きな値は小さな値より大きくなります。-1は10よりも小さく、-10は-1より小さくなります。

浮動小数点値NaNは、他のすべての数値より大きく、NaN自体と同等です。

日付値

新しい日付の方が古い日付より大きいとみなされます。 たとえば、'10-AUG-2005'に相当する日付は、'30-AUG-2006'に相当する日付よりも小さく、'30-AUG-2006 1:15pm'は、'30-AUG-2006 10:10am'より大きくなります。

文字値

文字値は、次のものを使用して比較されます。

バイナリ・ソートおよび言語ソート

バイナリ・ソートでは、データベース・キャラクタ・セットでの文字の数値コードの連結値に従って文字列が比較されます。キャラクタ・セット内のある文字の数値がもう一方の文字の数値より大きい場合、その文字がもう一方の文字より大きいと判断されます。空白はすべての文字より小さくなります。

言語ソートは、数値コードのバイナリ順序が、比較している文字の言語順序と一致しない場合に役立ちます。言語ソートでは、NLS_SORTによって設定された言語ルールに基づいて、SQLソートおよびSQL比較が行われます。 言語ソートの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の言語ソートに関する説明を参照してください。

デフォルトはバイナリ・ソートです。

空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス

空白埋め比較セマンティクスを使用している場合に2つの値の長さが異なると、両方が同じ長さになるまで短い方の値に空白が追加されます。その後、最初の異なる文字が検出されるまで1文字ずつ値が比較されます。この最初の違いが検出された位置で、より大きな文字を持つ値が、大きい方の値とみなされます。2つの値に異なる文字がない場合、これらは同等であるとみなされます。つまり、2つの値の違いが後続の空白の数のみである場合、これらの値は同等であるとみなされます。

空白埋め比較セマンティクスは、比較対象の両方の値がCHAR型またはNCHAR型の式あるいはテキスト・リテラルである場合に使用します。

非空白埋め比較セマンティクスを使用している場合、最初の異なる文字が検出されるまで2つの値が1文字ずつ比較されます。この最初に違いが検出された位置で、より大きな文字を持つ値が、大きい方の値とみなされます。長さが異なる2つの値が短い方の値の最後まで同じである場合は、長い方が大きい値とみなされます。長さが同じ2つの値に異なる文字がない場合、これらは同等であるとみなされます。

非空白埋め比較セマンティクスは、比較対象の両方の値にVARCHAR2型またはNVARCHAR2型が使用されている場合に使用します。

空白埋め比較セマンティクスを使用した場合の例は、次のとおりです。

'a   ' = 'a'

非空白埋め比較セマンティクスを使用した場合の例は、次のとおりです。

'a   ' > 'a'

データ型変換

通常、1つの式に異なるデータ型の値を使用することはできません。ただし、TimesTenでは、データ型間の暗黙的および明示的な変換の両方がサポートされています。明示的な変換を使用することをお薦めします。

暗黙的なデータ型変換

次のルールが適用されます。

  • 正確な数値(TT_TINYINT、TT_SMALLINT、TT_INTEGER、TT_BIGINT、NUMBER)と浮動小数点値(BINARY_FLOAT、BINARY_DOUBLE)間で変換を行うと、不正確になる場合があります。これは、正確な数値では10進数の精度が使用され、浮動小数点数ではバイナリ精度が使用されるためです。

  • TimesTenでは、文字値を日付、時刻または日時の値と比較すると、文字データが日付、時刻または日時の値に変換されます。

  • キャラクタ・セットがTIMESTEN8である場合を除いて、CHAR/VARCHAR2とNCHAR/NVARCHAR2間の暗黙的および明示的な変換がサポートされます。明示的な変換の例を次に示します。

    Command> CREATE TABLE convdemo (c1 CHAR (10), x1 TT_INTEGER);
    Command> CREATE TABLE convdemo2 (c1 NCHAR (10), x2 TT_INTEGER);
    Command> INSERT INTO convdemo VALUES ('ABC', 10);
    1 row inserted.
    Command> INSERT INTO convdemo VALUES ('def', 100);
    1 row inserted.
    Command> INSERT INTO convdemo2 SELECT * FROM convdemo;
    2 rows inserted.
    Command> SELECT x1,x2,convdemo.c1, convdemo2.c1
           > FROM convdemo, convdemo2 where Ccnvdemo.c1 = convdemo2.c1;
    X1, X2, C1, C1
    < 10, 10, ABC       , ABC        >
    < 100, 100, def       , def        >
    2 rows found.
    

NULL値

NULL値は値がないことを示します。NULL値は、存在しない値のプレースホルダとして使用されます。表の列または式のパラメータには、表の作成時に列にNOT NULLを指定していないかぎり、そのデータ型に関係なくNULL値を指定することができます。

NULL値の次のプロパティは、行、パラメータ、ローカル変数の処理に影響します。

これらの属性によって、次のような場合は、NULL値を含む列、行、パラメータが無視されます。

第4章「検索条件」で説明するSQL条件を使用して、NULL値を明示的にテストできます。 アプリケーションでは、ODBC関数SQLBindColSQLBindParameterSQLGetDataSQLParamData、またはResultSet.wasNullとともにJDBC関数PreparedStatement.setNullおよびResultSet.getXXXXを使用して、NULL値の入出力を処理できます。

INFおよびNAN

TimesTenでは、IEEE浮動小数点値Inf(正の無限大)、-Inf(負の無限大)およびNaN(非数)がサポートされています。

定数値

定数値は、浮動小数点定数が許可されている場合に使用できます。次の定数値がサポートされています。

  • BINARY_FLOAT_INFINITY

  • -BINARY_FLOAT_INFINITY

  • BINARY_DOUBLE_INFINITY

  • -BINARY_DOUBLE_INFINITY

  • BINARY_FLOAT_NAN

  • BINARY_DOUBLE_NAN

次の例では、BINARY_FLOAT型の列およびTT_INTEGER型の列を含む表を作成します。BINARY_FLOAT_INFINITYおよびBINARY_FLOAT_NANは、BINARY_FLOAT型の列に挿入されます。

Command> CREATE TABLE bfdemo (id BINARY_FLOAT, Ii2 TT_INTEGER);
Command> INSERT INTO bfdemo VALUES (BINARY_FLOAT_INFINITY, 50);
1 row inserted.
Command> INSERT INTO bfdemo VALUES (BINARY_FLOAT_NAN, 100);
1 row inserted.
Command> SELECT * FROM bfdemo;
< INF, 50 >
< NAN, 100 >
2 rows found.

主キーの値

Inf、-InfおよびNaNは、主キーで定義された列で使用できる値です。これは、NULLの動作とは異なります。NULL値は、主キーで定義された列では使用できません。

BINARY_FLOAT列およびBINARY_DOUBLE列には、Inf、-InfおよびNaNの値のみ挿入できます。

InfおよびNaN(浮動小数点の条件)の選択

浮動小数点の条件によって、式が無限大であるか、演算での未定義の結果(NaN(非数))であるかが判別されます。

次のような構文があったとします。

Expression IS [NOT] {NAN| INFINITE}

Expression は、数値データ型、または数値データ型に暗黙的に変換可能なデータ型に解決される必要があります。

次の表に、浮動小数点の条件を示します。

条件 処理
IS [NOT] NAN NOTを指定せずExpression が値NaNの場合、TRUEが返されます。NOTを指定してExpressionが値NaNでない場合、Trueが返されます。
SELECT * FROM bfdemo WHERE id IS NOT NAN;
ID, ID2
< INF, 50 >
1 row found.
IS [NOT] INFINITE NOTを指定せずExpressionが値+INFまたは-INFの場合、TRUEが返されます。NOTを指定してExpressionが値+INFまたは-INFでない場合、Trueが返されます。
SELECT * FROM bfdemo WHERE id IS NOT INFINITE;
ID, ID2
< NAN, 100 >
1 row found.


注意:

定数キーワードは、特定のBINARY_FLOAT値およびBINARY_DOUBLE値を表します。 比較キーワードは、値のプロパティに対応しており、いずれの型に対しても固有ではありません(ただし、BINARY_FLOAT型、BINARY_DOUBLE型、またはBINARY_FLOATやBINARY_DOUBLEに変換可能な型に対しては、TRUEとしてのみ評価されます)。

InfとNaNの比較には、次のルールが適用されます。

  • Inf(または-Inf)と有限値の間での比較は、想定したとおりの結果になります。たとえば、5 > -Infなどです。

  • (Inf = Inf)および(Inf > -Inf)は両方ともTRUEと評価されます。

  • (NaN = NaN)はTRUEと評価されます。

照合順序に関しては次のように適用されます。

  • -Infは、他のすべての値より低い優先順位でソートされます。

  • Infは、他のすべての値より高い優先順位でソートされますが、NanおよびNULLより低い優先順位でソートされます。

  • NaNは、Infより高い優先順位でソートされます。

  • NULLは、NaNより高い優先順位でソートされます。NULLは、すべての照合順序で常に最大の値となります。

InfおよびNaNを含む式

  • 浮動小数点値を含む式では、Inf、-InfまたはNaNが生成される場合があります。これらの値は、式でオーバーフローまたは例外状態が生成された場合、あるいは式内の1つ以上の値がInf、-InfまたはNaNの場合に生成される可能性があります。InfおよびNaNは、オーバーフローまたは0(ゼロ)による除算が条件の場合に生成されます。

  • 集計関数では、Inf、-InfおよびNaNの値は無視されません。NULL値は無視されます。集計(または任意の選択)からInfおよびNaNを除外する場合は、IS NOT NAN条件およびIS NOT INFINITE条件の両方を使用します。

オーバーフローと切捨て

処理の内容によっては、データがオーバーフローするかまたは切り捨てられる場合があります。オーバーフローはエラーになり、Infが生成される場合があります。切り捨ての場合、重要ではないデータが失われます。

INSERTまたはUPDATE文を使用して、正確な値をデータ・ストアに保存する際、目的の列のスケールがその値より小さい場合にかぎり、切捨てが行われます。このような切捨てが行われた場合、警告が戻されます。オーバーフローのため値が収まらない場合は、特別な値Infが戻され、指定した値は挿入されません。

計算時、あるいはデータ・ストアに値を挿入したりデータ・ストアの値を更新する際、近似値が切り捨てられます。値の挿入または更新時にエラーが戻されます。近似値がオーバーフローした場合は、特別な値Infが戻されます。

次のような場合に、オーバーフローが発生します。

英数字または数値データ型では、切り捨てによってエラーまたは警告が発生する場合があります。

アンダーフロー

近似値が、ハードウェアで表現できないほど0(ゼロ)に近似する場合、アンダーフローが発生して0(ゼロ)になり、切捨ての警告が戻されます。

レプリケーションの制限

レプリケートするデータ・ストア内のデータ型のサイズには次の制限があります。

TimesTen型モード(下位互換モード)

TimesTenでは、データ型の下位互換モード(TimesTen型モード)がサポートされています。型モードは、データ・ストア作成属性です。TypeMode=1はTimesTenモードを示します。

型モードの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のTypeModeに関する説明を参照してください。

TimesTen型モードでのデータ型の使用方法の詳細は、TimesTenの以前のリリースのドキュメントを参照してください。

TimesTen型モードでサポートされているデータ型

表1-6 TimesTen型モードでサポートされているデータ型

データ型 説明

BIGINT

-9,223,372,036,854,775,808 -(263)から9,223,372,036,854,775,807 (263 - 1)の範囲の符号付き8バイト整数。

かわりに、TT_BIGINTを指定することもできます。

BINARY (n)

nバイトの固定長バイナリの値。nに指定できる値は、1から8300です。

BINARYデータは、後続の0(ゼロ)を使用してその列の最大長まで調整されます。

BINARY_DOUBLE

64ビットの浮動小数点数。BINARY_DOUBLEは倍精度のネイティブの浮動小数点数です。 +Inf、-InfおよびNaNの各値をサポートしています。BINARY_DOUBLEは指数と小数部からなる近似値です。指数またはE表記法を使用できます。BINARY_DOUBLEにはバイナリ精度53が指定されています。

正の最小有限値: 2.22507485850720E-308

正の最大有限値: 1.79769313486231E+308

かわりに、DOUBLE [PRECISION]またはFLOAT [(53)]を指定することもできます。

BINARY_FLOAT

32ビットの浮動小数点数。BINARY_FLOATは単精度のネイティブの浮動小数点型です。+Inf、-InfおよびNaNの各値をサポートしています。BINARY_FLOATは指数と小数部からなる近似値です。指数またはE表記法を使用できます。BINARY_FLOATにはバイナリ精度24が指定されています。

正の最小有限値: 1.17549E-38F

正の最大有限値: 3.40282E+38F

かわりに、REALまたはFLOAT (24)を指定することもできます。

CHAR[ACTER] [(n [BYTE|CHAR])]

長さがnバイトまたはn文字の固定長文字列。デフォルトは1バイトです。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上8300バイト以下です。

CHARは、列に文字長セマンティクスが使用されていることを示します。CHARの最小長は1文字です。最大長は8300バイトに収まる文字数によって異なります。これは使用されているデータベース・キャラクタ・セットによって決まります。キャラクタ・セットがAL32UTF8の場合、1文字当たり最大4バイトが必要になる可能性があるため、CHARの長さは、キャラクタ・セットに応じて2075から8300の範囲に制限されます。

長さが0(ゼロ)の文字列は、NULL以外の有効な値です。CHARのデータは後続の空白を使用してその列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

かわりに、TT_CHAR [(n [BYTE|CHAR])]を指定することもできます。

DATE

日付情報(世紀、年、月、日)を格納します。書式はYYYY-MM-DDです。MMは整数で表します。 たとえば、2006-10-28と指定します。

記憶域サイズは4バイトです。

有効な日付は、1753-01-01(1753年1月1日)から9999-12-31(9999年12月31日)の間の日付です。

かわりに、TT_DATEを指定することもできます。

DEC[IMAL][(p[,s])]または

NUMERIC[(p[,s])]

固定の最大精度(総桁数)とスケール(小数点の右側の桁数)を定義した正確な数値。精度pには1から40を指定します。スケールには0からpを指定します。精度のデフォルト値は40、スケールのデフォルト値は0です。

INTERVAL [+/-] IntervalQualifier

TimesTenはINTERVAL型を部分的にサポートします。INTERVAL型は、型INTERVALとIntervalQualifierで表現されます。IntervalQualifierには、精度を持たない単一のフィールド型のみを指定できます。デフォルトの先行精度は、すべてのINTERVAL型で8桁です。単一のフィールド型は、YEAR、MONTH、DAY、HOUR、MINUTE、SECONDのいずれかです。現在、INTERVAL型は定数でのみ指定できます。

NCHAR[(n)]

n×2バイトのUnicode文字の固定長文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。NCHARの文字の制限はバイトの制限の2分の1であるため、最大サイズは4150です。記憶域のデフォルト最小バイト数は2n(2)です。

長さが0(ゼロ)の文字列は、NULL以外の有効な値です。NCHARのデータはU+0020 SPACEを使用してその列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

かわりに、TT_NCHAR[(n)]を指定することもできます。

NATIONAL CHARACTERおよびNATIONAL CHARは、NCHARのシノニムです。

SMALLINT

–32,768 –(215)から32,767(215–1)の範囲のネイティブの符号付き16ビット整数。

かわりに、TT_SMALLINTを指定することもできます。

TIME

00:00:00(午前0時)から23:59:59(午後11時59分59秒)の間の時刻。書式はHH:MI:SSです。記憶域サイズは8バイトです。

TIMESTAMP

1753-01-01 00:00:00(1753年1月1日の午前0時)から9999-12-31 23:59:59(9999年12月31日の午後11時59分59秒)の間の日付と時刻。マイクロ秒に満たない端数は、「Data Truncated」エラーになります。書式はYYYY-MM-DD HH:MI:SS [.FFFFFF]です。

記憶域サイズは8バイトです。

かわりに、TT_TIMESTAMPまたは[TT_]TIMESTAMP (6)を指定することもできます。

TINYINT

0から255(28-1)の範囲の符号なし整数。

TINYINTは符号なしのため、TINYINTを否定するデータ型はSMALLINTになります。

かわりに、TT_TINYINTを指定することもできます。

INT[EGER]

–2,147,483,648 –(231)から2,147,483,647(231–1)の範囲の符号付き整数。

かわりに、TT_INTEGERを指定することもできます。

NVARCHAR(n)

n×2バイトのUnicode文字の可変長文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。NVARCHARの文字の制限はバイトの制限の2分の1であるため、最大サイズは2,097,152(221)です。nを指定する必要があります。

長さが0(ゼロ)の文字列は、NULL以外の有効な値です。

空白埋め比較セマンティクスが使用されます。空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

かわりに、TT_NVARCHAR(n)を指定することもできます。

NATIONAL CHARACTER VARYING、NATIONAL CHAR VARYINGおよびNCHAR VARYINGは、NVARCHARのシノニムです。

VARCHAR (n [BYTE|CHAR])

最大長がnバイトまたはn文字の可変長文字列。nを指定する必要があります。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上4194304(222)バイト以下です。

CHARは、列に文字長セマンティクスが使用されていることを示します。

長さが0(ゼロ)の文字列は、NULL以外の有効な値です。

空白埋め比較セマンティクスが使用されます。空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

かわりに、TT_VARCHAR (n [BYTE|CHAR])を指定することもできます。

VARBINARY (n)

最大長がnバイトの可変長バイナリの値。nに指定できる値は、1から4194304(222)です。


TimesTen型モードでサポートされているOracleデータ型

表1-7 TimesTen型モードでサポートされているOracleデータ型

データ型 説明

NUMBER [(precision [,scale])]

精度とスケールが指定された数値。精度の範囲は1から38桁です。スケールの範囲は-84から127です。精度とスケールの両方ともオプションです。

精度およびスケールを指定しない場合は、最大精度の38および柔軟なスケールが指定されたとみなされます。

NUMBERは、精度より大きいスケールおよび負のスケールをサポートしています。

NUMBERは、1.0 x 10-130から1.0 x 10126未満の絶対値を含む正と負の固定数値および0(ゼロ)を格納します。値が1.0 x 10126以上の絶対値である算術式を指定すると、エラーが戻されます。

TimesTen型モードのNUMBERデータ型は、最も小さい(最も0に近い)値として10e-89を格納します。

ORA_CHAR [(n [BYTE|CHAR])]

長さがnバイトまたはn文字の固定長文字列。デフォルトは1バイトです。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上8300バイト以下です。

CHARは、列に文字長セマンティクスが使用されていることを示します。CHARの最小長は1文字です。最大長は8300バイトに収まる文字数によって異なります。これは使用されているデータベース・キャラクタ・セットによって決まります。キャラクタ・セットがAL32UTF8の場合、1文字当たり最大4バイトが必要になる可能性があるため、CHARの長さは、キャラクタ・セットに応じて2075から8300の範囲に制限されます。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

ORA_CHARのデータは、後続の空白を使用して列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

ORA_DATE

日付と時刻の情報(世紀、年、月、日、時、分、秒)を格納します。 書式はYYYY-MM-DD HHMMSSです。

有効な日付の範囲は紀元前4712年1月1日から西暦9999年12月31日です。

記憶域サイズは7バイトです。小数秒はありません。

ORA_NCHAR[(n)]

長さがn×2バイトのUnicode文字の固定文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。NCHARの文字の制限はバイトの制限の2分の1であるため、最大サイズは4150です。記憶域のデフォルト最小バイト数は2n(2)です。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

ORA_NCHARのデータは、U+0020 SPACEを使用してその列の最大長まで調整されます。空白埋め比較セマンティクスが使用されます。空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

ORA_NVARCHAR2(n)

n×2バイトのUnicode文字の可変長文字列です。

必要なバイト数は2×nです。 nは、指定された文字数です。 ORA_NVARCHAR2の文字の制限はバイトの制限の2分の1であるため、最大サイズは2,097,152(221)です。nを指定する必要があります。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

非空白埋め比較セマンティクスが使用されます。

空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

ORA_VARCHAR2 (n [BYTE|CHAR])

最大長がnバイトまたはn文字の可変長文字列。

BYTEは、列にバイト長セマンティクスが使用されていることを示します。nに指定できる値は、1バイト以上4194304(222)バイト以下です。nを指定する必要があります。

CHARは、列に文字長セマンティクスが使用されていることを示します。

長さが0(ゼロ)の文字列は、NULLとして解釈されます。

非空白埋め比較セマンティクスが使用されます。空白埋めセマンティクスおよび非空白埋めセマンティクスの詳細は、「空白埋め比較セマンティクスおよび非空白埋め比較セマンティクス」を参照してください。

ORA_TIMESTAMP

[(fractional_seconds_precision)]

日付データ型の年、月および日の値に加えて、時、分および秒の時間の値を格納します。Fractional_seconds_precisionは、秒のフィールドの小数部の桁数です。有効な日付の範囲は紀元前4712年1月1日から西暦9999年12月31日です。

小数秒の精度の範囲は0(ゼロ)から9です。デフォルトは6です。書式は次のとおりです。

YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]

記憶域サイズは12バイトです。