列のデータ型の変更に関するルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

次ページのテーブルは、データ型を既存のタイプから新しいタイプに変更するためのルールを示しています。

ただし、元のデータ型を対象のデータ型に明示的に変換できるかどうか(<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照)と、ALTER TABLEリクエストを使用して既存の列のデータ型を新しい型に変更できるかどうかは、直接には対応していません。

ALTER TABLEリクエストを使用して、既存の列の文字セットの属性を変更することはできません。たとえば、列がLATINと定義されている場合、それをUNICODEに変更することはできません。

古いデータ型 新しいデータ型 変更についての制約
すべて すべて プライマリ インデックスまたはセカンダリ インデックスで指定されている列のデータ型は、変更不可。
  • CHARACTER(n), UC
  • CHARACTER(n)
  • CHARACTER(n)
  • CHARACTER(n), CS
長さは変更できないが、大文字小文字の設定だけは変更可能。
CHARACTER CHARACTER(n) n>1の場合は不可。
CHARACTER DATE 値の先行ブランクと末尾ブランクが切り捨てられ、DATE文字列リテラルの宣言の中の文字列リテラルのように処理される。

変換できない場合、システムはエラーを返す。

CHARACTER TIME [WITH TIME ZONE] 値の先行ブランクと末尾ブランクが切り捨てられ、TIME文字列リテラルの宣言の中の文字列リテラルのように処理される。

変換できない場合、システムはエラーを返す。

CHARACTER TIMESTAMP [WITH TIME ZONE] 値の先行ブランクと末尾ブランクが切り捨てられ、TIMESTAMP文字列リテラルの宣言の中の文字列リテラルのように処理される。

変換できない場合、システムはエラーを返す。

CHARACTER INTERVAL 値の先行ブランクと末尾ブランクが切り捨てられ、INTERVAL文字列リテラルの宣言の中の文字列リテラルのように処理される。

変換できない場合、システムはエラーを返す。

  • CHARACTER
  • VARCHAR
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) 次の場合にのみ変更可。
  • mnfは変更なし
  • n= 1または2、m < 3
  • n = 3または4、m < 5
  • n = 5~9、m < 10
  • n= 10~15、m ≤ 18
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でない場合、値はセッションの現行のタイムゾーン変位に調整される。
  • TIME [WITH TIME ZONE]
  • TIMESTAMP [WITH TIME ZONE]
  • INTERVAL
CHARACTER(n) nは値の長さ以上でなければならない。

nが値より大きい場合、末尾ブランクが追加される。

nが値より小さい場合、エラーが報告される。

  • TIME [WITH TIME ZONE]
  • TIMESTAMP [WITH TIME ZONE]
  • INTERVAL
VARCHAR nが値より大きい場合に末尾ブランクが追加されない点を除いて、CHARACTERへの変換と同じ。
TIME [WITH TIME ZONE] TIMESTAMP [WITH TIME ZONE] 制約なし。

年、月、および日は、CURRENT_DATEの値に設定される。

ターゲットもTIME ZONEを指定する場合、タイムゾーンの値はソースの明示的または暗黙の値から取られる。

TIME PERIOD 含めることはできません。
TIME WITH TIME ZONE TIME 制約なし。ただし、TIME ZONE値は除去される。
  • TIMESTAMP
  • TIMESTAMP WITH 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) mnで、YEARMONTHまたはDAYTIMEに互換性がある場合にのみ変更可能。

YEAR-MONTHの間隔とDAY-TIMEの間隔を混合することはできない。

PERIOD
  • CHARACTER(n)
  • VARCHAR(n)
含めることはできません。
PERIOD PERIOD 含めることはできません。
PERIOD DATE 含めることはできません。
PERIOD TIME [WITH TIME ZONE] 含めることはできません。
PERIOD TIMESTAMP [WITH TIME ZONE] 含めることはできません。
UDT 含めることはできません。 含めることはできません。

ALTER TABLEリクエストを使用して列のUDTデータ型を他のデータ型に変換することはできない。

  • ARRAY (1次元)
  • VARRAY (1次元)
含めることはできません。 含めることはできません。

ALTER TABLEリクエストを使用して1次元列のARRAYデータ型を他のデータ型に変換することはできない。

  • ARRAY (多次元)
  • VARRAY (多次元)
許可されない。 含めることはできません。

ALTER TABLEリクエストを使用して多次元列のARRAYデータ型を他のデータ型に変換することはできない。