DB2 Version 10.1 for Linux, UNIX, and Windows

CAST 指定

CAST 指定は、data-type によって指定されたタイプにキャストされたキャスト・オペランド (第 1 オペランド) を戻します。 キャストがサポートされていない場合、エラー (SQLSTATE 42846) が戻されます。

構文図を読む構文図をスキップする
cast-specification

|--CAST--(--+---+-expression-------+----AS--| data-type |--+---------------------------------+-+-->
            |   +-NULL-------------+                       |       (1)                       | |   
            |   '-parameter-marker-'                       '-SCOPE------+-typed-table-name-+-' |   
            |                                                           '-typed-view-name--'   |   
            +-cursor-cast-specification--------------------------------------------------------+   
            '-row-cast-specification-----------------------------------------------------------'   

>--)------------------------------------------------------------|

cursor-cast-specification

|--parameter-marker--AS--+-CURSOR-----------+-------------------|
                         '-cursor-type-name-'   

row-cast-specification

|--+-row-expression---+--AS----row-type-name--------------------|
   +-NULL-------------+                          
   '-parameter-marker-'                          

data-type

|--+-| built-in-type |----+-------------------------------------|
   +-array-type-name------+   
   +-distinct-type-name---+   
   +-structured-type-name-+   
   '-REF--(type-name2)----'   

built-in-type

|--+-+-SMALLINT----+---------------------------------------------------+--|
   | +-+-INTEGER-+-+                                                   |   
   | | '-INT-----' |                                                   |   
   | '-BIGINT------'                                                   |   
   |                  .-(5,0)-------------------.                      |   
   +-+-+-DECIMAL-+-+--+-------------------------+----------------------+   
   | | '-DEC-----' |  |          .-,0-------.   |                      |   
   | '-+-NUMERIC-+-'  '-(integer-+----------+-)-'                      |   
   |   '-NUM-----'               '-,integer-'                          |   
   |          .-(53)------.                                            |   
   +-+-FLOAT--+-----------+--+-----------------------------------------+   
   | |        '-(integer)-'  |                                         |   
   | +-REAL------------------+                                         |   
   | |         .-PRECISION-. |                                         |   
   | '-DOUBLE--+-----------+-'                                         |   
   |           .-(34)-.                                                |   
   +-DECFLOAT--+------+------------------------------------------------+   
   |           '-(16)-'                                                |   
   |                    .-(1)-------.                                  |   
   +-+-+-+-CHARACTER-+--+-----------+----------+--+----------------+-+-+   
   | | | '-CHAR------'  '-(integer)-'          |  +-FOR BIT DATA---+ | |   
   | | '-+-VARCHAR----------------+--(integer)-'  +-FOR SBCS DATA--+ | |   
   | |   '-+-CHARACTER-+--VARYING-'               '-FOR MIXED DATA-' | |   
   | |     '-CHAR------'                                             | |   
   | |                                  .-(1M)-------------.         | |   
   | '-+-CLOB------------------------+--+------------------+---------' |   
   |   '-+-CHARACTER-+--LARGE OBJECT-'  '-(integer-+---+-)-'           |   
   |     '-CHAR------'                             +-K-+               |   
   |                                               +-M-+               |   
   |                                               '-G-'               |   
   |            .-(1)-------.                                          |   
   +-+-GRAPHIC--+-----------+-------+----------------------------------+   
   | |          '-(integer)-'       |                                  |   
   | +-VARGRAPHIC--(integer)--------+                                  |   
   | |         .-(1M)-------------. |                                  |   
   | '-DBCLOB--+------------------+-'                                  |   
   |           '-(integer-+---+-)-'                                    |   
   |                      +-K-+                                        |   
   |                      +-M-+                                        |   
   |                      '-G-'                                        |   
   |                          .-(1M)-------------.                     |   
   +-+-BLOB----------------+--+------------------+---------------------+   
   | '-BINARY LARGE OBJECT-'  '-(integer-+---+-)-'                     |   
   |                                     +-K-+                         |   
   |                                     +-M-+                         |   
   |                                     '-G-'                         |   
   +-+-DATE---------------------+--------------------------------------+   
   | +-TIME---------------------+                                      |   
   | |            .-(6)-------. |                                      |   
   | '-TIMESTAMP--+-----------+-'                                      |   
   |              '-(integer)-'                                        |   
   +-BOOLEAN-----------------------------------------------------------+   
   +-XML---------------------------------------------------------------+   
   | .-SYSPROC.-.                                                      |   
   '-+----------+--DB2SECURITYLABEL------------------------------------'   

注:
  1. SCOPE 節が適用されるのは、REF データ・タイプのみです。
expression
キャスト・オペランドが式 (パラメーター・マーカーまたは NULL ではなく) である場合、結果は、指定されたターゲット data-type に変換された引数値です。

文字ストリング (CLOB 以外) を長さの異なる文字ストリングにキャストするとき、後続ブランク以外の文字が切り捨てられると、警告 (SQLSTATE 01004) が戻されます。 GRAPHIC ストリング (DBCLOB 以外) を長さの異なる GRAPHIC ストリングにキャストするとき、後続ブランク以外の文字が切り捨てられると、警告 (SQLSTATE 01004) が戻されます。 キャスト・オペランドが BLOB、CLOB、および DBCLOB の場合、何らかの文字が切り捨てられると警告が発行されます。

配列をキャストするとき、 ターゲット・データ・タイプはユーザー定義の配列データ・タイプでなければなりません (SQLSTATE 42821)。 配列の要素のデータ・タイプは、ターゲット配列データ・タイプの要素のデータ・タイプと同じでなければなりません (SQLSTATE 42846)。 配列のカーディナリティーは、ターゲット配列データ・タイプの最大カーディナリティー以下でなければなりません (SQLSTATE 2202F)。

NULL
キャスト・オペランドがキーワード NULL である場合、結果は、指定された data-type の NULL 値です。
parameter-marker
パラメーター・マーカーは通常は式と見なされますが、ここでは特別な意味を持つため別個に説明します。 キャスト・オペランドが parameter-marker である場合、指定された data-type は、指定されたデータ・タイプに置き換えが割り当て可能である (ストリングの記憶割り当てを使用して) ことを示す合意であると見なされます。 このようなパラメーター・マーカーは、型付きパラメーター・マーカー と見なされます。 型付きパラメーター・マーカーは、関数解決、選択リストの DESCRIBE、または列割り当てを行う目的で、他の型付き値と同じように扱われます。
cursor-cast-specification
パラメーター・マーカーがカーソル・タイプと予想されることを表す場合に使用される CAST 指定。 カーソル・タイプを許可するコンテキスト内の、式がサポートされている任意の場所で使用できます。
parameter-marker
キャスト・オペランドはパラメーター・マーカーの一種で、指定されたカーソル・タイプに対して置き換えが割り当て可能であることを示す合意と見なされます。
CURSOR
組み込みデータ・タイプ CURSOR を指定します。
cursor-type-name
ユーザー定義のカーソル・タイプの名前を指定します。
row-cast-specification
入力が行の値で、結果がユーザー定義の行タイプである CAST 指定。 row-cast-specification は、row-expression が許可されている場合にのみ有効です。
row-expression
row-expression のデータ・タイプは、表またはビューの定義に固定されている行タイプの変数でなければなりません。row-expression のデータ・タイプを、ユーザー定義の行タイプにすることはできません (SQLSTATE 42846)。
NULL
キャスト・オペランドが NULL 値になるように指定します。その結果、 指定したデータ・タイプのすべてのフィールドに NULL 値が入る行ができます。
parameter-marker
キャスト・オペランドはパラメーター・マーカーの一種で、指定された row-type-name に対して置き換えが割り当て可能であることを示す合意と見なされます。
row-type-name
ユーザー定義の行タイプの名前を指定します。row-expression は、row-type-name にキャスト可能でなければなりません (SQLSTATE 42846)。
data-type
既存のデータ・タイプの名前。 このタイプ名が修飾されていない場合は、SQL パスを使用してデータ・タイプ解決が行われます。 data-type を指定するとき、長さや精度と位取りのような属性が関連付けられているデータ・タイプは、これらの属性を組み込む必要があります。 (指定されていない場合、CHAR は長さ 1 にデフォルト解釈され、DECIMAL は精度 5 および位取り 0 にデフォルト解釈され、DECFLOAT は精度 34 にデフォルト解釈されます。) FOR SBCS DATA 節または FOR MIXED DATA 節 (データベースがグラフィック・データ・タイプをサポートするかどうかによって、 1 つだけがサポートされる) を使用して、FOR BIT DATA ストリングをデータベース・コード・ページにキャストできます。 サポートされるデータ・タイプに関する制限は、 指定したキャスト・オペランドに基づいて適用されます。
  • キャスト・オペランドが の場合にサポートされるターゲット・データ・タイプは、キャスト・オペランドのデータ・タイプ (ソース・データ・タイプ) によって異なります。
  • キャスト・オペランドがキーワード NULL の場合、既存のどのデータ・タイプでも指定できます。
  • キャスト・オペランドがパラメーター・マーカーの場合、ターゲット・データ・タイプは、既存の任意のデータ・タイプとすることができます。 データ・タイプがユーザー定義特殊タイプの場合、パラメーター・マーカーを使用するアプリケーションは、そのユーザー定義特殊タイプのソース・データ・タイプを使用します。 データ・タイプがユーザー定義構造化タイプの場合、パラメーター・マーカーを使用するアプリケーションは、そのユーザー定義構造化タイプの TO SQL トランスフォーム関数の入力パラメーター・タイプを使用します。
データ・タイプが、データ・タイプ制約を使用して定義されている特殊タイプの場合、そのデータ・タイプ制約が適用され、この制約は真または不明と評価されなければなりません。このように評価されないとエラーが戻されます (SQLSTATE 23528)。
SCOPE
データ・タイプが参照タイプの場合、有効範囲は参照のターゲット表またはターゲット・ビューを識別するように定義することができます。
typed-table-name
型付き表の名前。 表名は既に指定されていなければなりません (SQLSTATE 42704)。 キャストは data-type REF(S) にするものでなければなりません。 ここでの Styped-table-name (SQLSTATE 428DM) のタイプを表しています。
typed-view-name
型付きビューの名前。 そのビューは存在しているか、あるいはビュー定義の一部としてキャストを組み込むように作成されているビューと同じ名前でなければなりません (SQLSTATE 42704)。 キャストは data-type REF(S) にするものでなければなりません。 ここでの Styped-view-name (SQLSTATE 428DM) のタイプを表しています。

数値データを文字データにキャストする場合、結果のデータ・タイプは固定長文字ストリングです。 文字データを数値データにキャストする場合、結果のデータ・タイプは指定した数値のタイプによって異なります。 例えば整数へのキャストの場合、 結果のデータ・タイプは長精度整数になります。