暗黙的なデータ型変換
あるデータ型から別のデータ型への変換が適切である場合、TimesTenは値を変換します。
表1-6および表1-7に、TimesTenの暗黙的なデータ型変換をマトリックスで示します。セル内のYESは、その変換がサポートされていることを示します。セル内のNOは、その変換がサポートされていないことを示します。表の後に、暗黙的な変換のルールを示します。
表1-6 暗黙的なデータ型変換
| 空白 | CHAR | VARCHAR2 | NCHAR | NVARCHAR2 | DATE | TT_DATE | TIMESTAMP | TT_TIMESTAMP |
|---|---|---|---|---|---|---|---|---|
|
CHAR |
該当なし |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|
VARCHAR2 |
YES |
該当なし |
YES |
YES |
YES |
YES |
YES |
YES |
|
NCHAR |
YES |
YES |
該当なし |
YES |
YES |
YES |
YES |
YES |
|
NVARCHAR2 |
YES |
YES |
YES |
該当なし |
YES |
YES |
YES |
YES |
|
DATE |
YES |
YES |
YES |
YES |
該当なし |
YES |
YES |
YES |
|
TT_DATE |
YES |
YES |
YES |
YES |
YES |
該当なし |
YES |
YES |
|
TIMESTAMP |
YES |
YES |
YES |
YES |
YES |
YES |
該当なし |
YES |
|
TT_TIMESTAMP |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
該当なし |
|
NUMERIC |
YES |
YES |
YES |
YES |
NO |
NO |
NO |
NO |
|
BLOB |
NO |
NO |
NO |
NO |
NO |
NO |
NO |
NO |
|
CLOB |
YES |
YES |
YES |
YES |
NO |
NO |
NO |
NO |
|
NCLOB |
YES |
YES |
YES |
YES |
NO |
NO |
NO |
NO |
|
BINARY/ VARBINARY |
YES |
YES |
YES |
YES |
NO |
NO |
NO |
NO |
|
ROWID |
YES |
YES |
YES |
YES |
NO |
NO |
NO |
NO |
表1-7 暗黙的なデータ型変換(前の表の続き)
| 空白 | NUMERIC | BLOB | CLOB | NCLOB | BINARY/ VARBINARY | ROWID |
|---|---|---|---|---|---|---|
|
CHAR |
YES |
YES |
YES |
YES |
YES |
YES |
|
VARCHAR2 |
YES |
YES |
YES |
YES |
YES |
YES |
|
NCHAR |
YES |
YES |
YES |
YES |
YES |
YES |
|
NVARCHAR2 |
YES |
YES |
YES |
YES |
YES |
YES |
|
DATE |
NO |
NO |
NO |
NO |
NO |
NO |
|
TT_DATE |
NO |
NO |
NO |
NO |
NO |
NO |
|
TIMESTAMP |
NO |
NO |
NO |
NO |
NO |
NO |
|
TT_TIMESTAMP |
NO |
NO |
NO |
NO |
NO |
NO |
|
NUMERIC |
該当なし |
NO |
NO |
NO |
NO |
NO |
|
BLOB |
NO |
該当なし |
NO |
NO |
YES |
NO |
|
CLOB |
NO |
NO |
該当なし |
YES |
NO |
NO |
|
NCLOB |
NO |
NO |
YES |
該当なし |
NO |
NO |
|
BINARY/ VARBINARY |
NO |
YES |
YES |
YES |
該当なし |
NO |
|
ROWID |
NO |
NO |
NO |
NO |
NO |
該当なし |
次のルールが適用されます。
-
文字データ型と非文字データ型に対する算術演算および比較中に、TimesTenはすべての文字データ型を数値または日時のいずれかの適切なデータ型に変換します。
CHAR/VARCHAR2とNCHAR/NVARCHAR2の算術演算では、TimesTenはNUMBERに変換します。 -
算術演算では、文字値を数値に変換する場合、浮動小数点値
INFおよびNANはサポートされません。 -
連結操作では、TimesTenにより、他のオペランドに応じて、文字データ型以外のデータ型が
CHAR、NCHAR、VARCHAR2またはNVARCHAR2に変換されます。 -
数値と文字値を比較する場合、TimesTenは文字データを数値に変換します。
-
数値と日時値を比較する場合、TimesTenは文字データを日時値に変換します。
-
タイムスタンプ値から
DATE値への変換では、タイムスタンプ値の秒の小数部は切り捨てられます。 -
BINARY_FLOATからBINARY_DOUBLEへの変換は正確に行われます。 -
BINARY_DOUBLEの値がBINARY_FLOATでサポートされている精度のビット数よりも多いビット数を使用している場合、BINARY_DOUBLEからBINARY_FLOATへの変換は正確に行われません。 -
文字値または正確な数値(
TT_TINYINT、TT_SMALLINT、TT_INTEGER、TT_BIGINT、NUMBER)と浮動小数点値(BINARY_FLOAT、BINARY_DOUBLE)間で変換を行うと、不正確になる場合があります。これは、文字値および正確な数値では10進数の精度が使用され、浮動小数点数ではバイナリ精度が使用されるためです。 -
数値を操作する際、TimesTenは、通常、最大容量を確保するために精度およびスケールを調整します。この場合、このような操作によって変換された数値データ型は、基礎となる表に含まれる数値データ型と異なることがあります。
-
代入を実行する場合、TimesTenは等号(=)の右側の値を左側の代入ターゲットのデータ型に変換します。
-
SQL関数または演算子に不当なデータ型の引数を指定して使用する場合、TimesTenで暗黙的な変換がサポートされていれば、その引数を正当なデータ型に変換します。
-
INSERT、INSERT... SELECTおよびUPDATE操作中に、TimesTenは変更する列のデータ型に値を変換します。 -
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 Convdemo.c1 = convdemo2.c1; X1, X2, C1, C1 < 10, 10, ABC , ABC > < 100, 100, def , def > 2 rows found.