キャスト操作では、指定のsource_data_typeまたはtarget_data_typeルーチンを使って、指定のcast_functionが指定のcast_methodに変換されます。これは、事前定義データ型の変換に使用されるCASTオペレータに似ています。CASTオペレータの詳細については、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。少なくとも、source_data_typeまたはtarget_data_typeの任意のはUDTでなければなりません(CREATE TYPE (DISTINCT形式)およびCREATE TYPE (STRUCTURED形式)を参照)。
キャストとは、UDTともう1つのデータ型(別のUDTであることもあればそうでないこともある)との間でどちらかの方向に変換するためにシステムが使用するメカニズムのことです。UDTは、それぞれソースとターゲットの特定の組合わせの変換をサポートする、複数のキャストを持つことができます。
- circle_typeからVARCHAR
- VARCHARからcircle_type
- circle_typeからVARBYTE
- VARBYTEからcircle_type
ユーザー定義キャストは、作成直後にSQL CAST関数で使用できます。Teradata Vantage™ - データ タイプおよびリテラル、B035-1143を参照してください。たとえば、circle UDTからVARCHAR(40)への変換キャストを定義する場合、次のキャスト操作を指定できます。
CAST(circle_udt_expression AS VARCHAR(40))
互換性のある事前定義データ型を適切な事前定義データ型にキャストし、これをソースにしてターゲット データ型へのキャストを行なう場合、システムは事前定義データ型との間のキャストを自動的かつ暗黙的にサポートします。
システムがUDT関連の暗黙的キャストを適用する操作範囲は、従来の事前定義データ型関連のキャストが適用される操作範囲のサブセットです。Teradata Vantage™ - データ タイプおよびリテラル、B035-1143を参照してください。
例えば、次のWHERE句の等価比較を考えてみましょう。
WHERE myUdt = NEW CircleUdt(1,1,9)
これはシステムがサポートする暗黙的キャストの範囲外です。割当て操作、サポートされるシステム演算子、またはサポートされる事前定義関数のいずれでもないためです。したがって暗黙的キャストは適用されません。比較対象のUDTを同一にするために明示的なキャスト操作を指定する必要があります。