次ページのテーブルは、データ型を既存のタイプから新しいタイプに変更するためのルールを示しています。
ただし、元のデータ型を対象のデータ型に明示的に変換できるかどうか(<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照)と、ALTER TABLEリクエストを使用して既存の列のデータ型を新しい型に変更できるかどうかは、直接には対応していません。
ALTER TABLEリクエストを使用して、既存の列の文字セットの属性を変更することはできません。たとえば、列がLATINと定義されている場合、それをUNICODEに変更することはできません。
古いデータ型 | 新しいデータ型 | 変更についての制約 |
---|---|---|
すべて | すべて | プライマリ インデックスまたはセカンダリ インデックスで指定されている列のデータ型は、変更不可。 |
|
|
長さは変更できないが、大文字小文字の設定だけは変更可能。 |
CHARACTER | CHARACTER(n) | n>1の場合は不可。 |
CHARACTER | DATE | 値の先行ブランクと末尾ブランクが切り捨てられ、DATE文字列リテラルの宣言の中の文字列リテラルのように処理される。 変換できない場合、システムはエラーを返す。 |
CHARACTER | TIME [WITH TIME ZONE] | 値の先行ブランクと末尾ブランクが切り捨てられ、TIME文字列リテラルの宣言の中の文字列リテラルのように処理される。 変換できない場合、システムはエラーを返す。 |
CHARACTER | TIMESTAMP [WITH TIME ZONE] | 値の先行ブランクと末尾ブランクが切り捨てられ、TIMESTAMP文字列リテラルの宣言の中の文字列リテラルのように処理される。 変換できない場合、システムはエラーを返す。 |
CHARACTER | INTERVAL | 値の先行ブランクと末尾ブランクが切り捨てられ、INTERVAL文字列リテラルの宣言の中の文字列リテラルのように処理される。 変換できない場合、システムはエラーを返す。 |
|
PERIOD | 含めることはできません。 |
VARCHAR(m), UC | VARCHAR(n) | 最大長を減らすことは不可。 UC以外からUCへの変更不可。 |
GRAPHIC | CHARACTER(n) CHARACTER SET GRAPHIC | n>1の場合は不可。 |
VARGRAPHIC(m) | VARCHAR(n) CHARACTER SET GRAPHIC | 最大長を減らすことは不可。 |
BYTE | BYTE(n) | n>1の場合は不可。 |
VARBYTE(m) | VARBYTE(n) | 最大長を減らすことは不可。 |
Exact NUMERIC | INTERVAL | INTERVALにはフィールドを1つしか含めることができず、その数値はINTERVALの許容範囲内にする必要がある。そうでない場合には、システムによってエラーが返されます。 |
INTEGER | DATE | INTEGER列に無効なDATE値が含まれることがあるため、この変更は不可。 |
DECIMAL(n,0) | INTEGER | nが5以上9以下の場合にのみ変更可。 |
DECIMAL(n,0) | BIGINT | nが10以上18以下の場合にのみ変更可。 |
DECIMAL(n,0) | SMALLINT | nが3または4の場合にのみ変更可。 |
DECIMAL(n,0) | BYTEINT | n=1または2の場合にのみ変更可。 |
DECIMAL(n,f) | DECIMAL(m,f) | 次の場合にのみ変更可。
|
DATE | INTEGER | 制約なし。 |
DATE | DATE | 制約なし。 |
DATE | CHARACTER | 制約なし。 結果はANSI日付形式でない場合がある。 |
DATE | TIME [WITH TIME ZONE] | 制約なし。 |
DATE | TIMESTAMP [WITH TIME ZONE] | 年、月、および日は、ソースの日付値から取られる。時間、分、および秒は0に設定される。 ターゲットがTIMESTAMP WITH TIME ZONEを指定する場合、タイムゾーン フィールドはソースの明示的または暗黙の値から取られる。 |
DATE | PERIOD | 含めることはできません。 |
TIME [WITH TIME ZONE] | TIME [WITH TIME ZONE] | ターゲットがTIME WITH TIME ZONEの場合、タイムゾーン変位の値が追加される。ターゲットがTIME WITH TIME ZONEでない場合、値はセッションの現行のタイムゾーン変位に調整される。 |
|
CHARACTER(n) | nは値の長さ以上でなければならない。 nが値より大きい場合、末尾ブランクが追加される。 nが値より小さい場合、エラーが報告される。 |
|
VARCHAR | nが値より大きい場合に末尾ブランクが追加されない点を除いて、CHARACTERへの変換と同じ。 |
TIME [WITH TIME ZONE] | TIMESTAMP [WITH TIME ZONE] | 制約なし。 年、月、および日は、CURRENT_DATEの値に設定される。 ターゲットもTIME ZONEを指定する場合、タイムゾーンの値はソースの明示的または暗黙の値から取られる。 |
TIME | PERIOD | 含めることはできません。 |
TIME WITH TIME ZONE | TIME | 制約なし。ただし、TIME ZONE値は除去される。 |
|
DATE | 結果は、TIME ZONE(存在する場合)に関する調整が行なわれた後のTIMESTAMP値からの年、月、および日。 |
TIMESTAMP [WITH TIME ZONE] | TIMESTAMP [WITH TIME ZONE] | 制約なし。 WITH TIME ZONEに関してソースとターゲットの値が異なる場合、変換が必要になる。変換することで、結果の値が変更されることもある。 |
TIMESTAMP [WITH TIME ZONE] | TIME | 結果は、hour(時間)、minute(分)、およびsecond(秒)の各フィールドから取られる。 ターゲットがTIME WITH TIME ZONEの場合、タイムゾーン変位が追加される。ターゲットがTIME WITH TIME ZONEでない場合、値はセッションの現行のタイムゾーン変位に調整される。 |
TIMESTAMP [WITH TIME ZONE] | PERIOD | 含めることはできません。 |
INTERVAL (n) | INTERVAL (m) | m≥ nで、YEARMONTHまたはDAYTIMEに互換性がある場合にのみ変更可能。 YEAR-MONTHの間隔とDAY-TIMEの間隔を混合することはできない。 |
PERIOD |
|
含めることはできません。 |
PERIOD | PERIOD | 含めることはできません。 |
PERIOD | DATE | 含めることはできません。 |
PERIOD | TIME [WITH TIME ZONE] | 含めることはできません。 |
PERIOD | TIMESTAMP [WITH TIME ZONE] | 含めることはできません。 |
UDT | 含めることはできません。 | 含めることはできません。 ALTER TABLEリクエストを使用して列のUDTデータ型を他のデータ型に変換することはできない。 |
|
含めることはできません。 | 含めることはできません。 ALTER TABLEリクエストを使用して1次元列のARRAYデータ型を他のデータ型に変換することはできない。 |
|
許可されない。 | 含めることはできません。 ALTER TABLEリクエストを使用して多次元列のARRAYデータ型を他のデータ型に変換することはできない。 |