サポートされる CAST

このトピックでは、データ・タイプの組み合わせでサポートされる CAST についてリストします。

CAST は、データ・タイプのすべての組み合わせでサポートされるわけではありません。サポートされる CAST とその効果を以下にリストします。

キャストの際には、ソース・データ・タイプとターゲット・データ・タイプの間で 1 対 1 または多対 1 マッピングを行えます。1 対 1 マッピングの例としては、ソース・データ・タイプが 1 つの整数で、ターゲット・データ・タイプが 1 つの浮動小数点の場合があります。多対 1 マッピングの例としては、3 つの整数から成るソース・データが 1 つの日付に変換される場合があります。表 1 には、サポートされている 1 対 1 キャストがリストされています。表 2 には、サポートされている多対 1 キャストがリストされています。

precisionscale、および interval qualifier については、ESQL データ・タイプを参照してください。

表 1. サポートされているキャスト: ソース・データ・タイプからターゲット・データ・タイプへの 1 対 1 マッピング
ソース・データ・タイプ ターゲット・データ・タイプ 効果
BIT BIT 結果は入力と同じです。
BIT BLOB ビット配列は、エレメント数が最大で 263 個のバイト配列に変換されます。ソースの長さが BLOB となるために適切でない場合 (8 の倍数でない場合)、エラーが報告されます。
BIT CHARACTER 結果は、ビット・ストリング・リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。結果ストリングは、B'bbbbbb' (b は 0 か 1) という形式になります。

CCSID 文節または ENCODING 文節のいずれかを指定した場合、指定されたビット配列は、指定された CCSID およびエンコード方式の文字であると見なされ、コード・ページが変換されて文字戻り値に入れられます。

CCSID のみを指定する場合、ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、または提供されたデータがコード・ページでは文字数が整数にならない長さである場合、あるいはデータの中に指定されたコード・ページでは無効な文字が含まれていた場合、この関数は変換エラーを報告します。

BIT INTEGER ビット配列は、エレメント数が最大で 263 であり、整数に変換されます。ソースが整数として適切な長さでない場合、エラーが報告されます。
BLOB BIT 指定されたバイト配列は、エレメント数が最大で 263 個のビット配列に変換されます。
BLOB BLOB 結果は入力と同じです。
BLOB CHARACTER 結果は、バイナリー・ストリング・リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。結果ストリングは、X'hhhh' (h は任意の 16 進文字) という形式になります。

CCSID 文節または ENCODING 文節のいずれかを指定した場合、指定されたバイト配列は、指定された CCSID およびエンコード方式の文字であると見なされ、コード・ページが変換されて文字戻り値に入れられます。

CCSID のみを指定する場合、ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、または提供されたデータがコード・ページでは文字数が整数にならない長さである場合、あるいはデータの中に指定されたコード・ページでは無効な文字が含まれていた場合、この関数は変換エラーを報告します。

BLOB INTEGER バイト配列は、エレメント数が最大で 263 であり、整数に変換されます。ソースが整数として適切な長さでない場合、エラーが報告されます。
BOOLEAN BOOLEAN 結果は入力と同じです。
BOOLEAN CHARACTER ソース値が TRUE の場合、結果は文字ストリング TRUE になります。ソース値が FALSE の場合、結果は文字ストリング FALSE になります。ブールでは、UNKNOWN というブール値は NULL 値と同じであるので、ソース値が UNKNOWN の場合、結果は NULL になります
CHARACTER BIT 文字ストリングは、ビット・ストリング・リテラルの規則またはビット・ストリング・リテラルの内容の規則に準拠していなければなりません。つまり、文字ストリングは、B'bbbbbbb' か bbbbbb (b は 0 か 1) のどちらかです。

CCSID 文節または ENCODING 文節だけを指定する場合、文字ストリングは指定された CCSID とエンコード方式に変換され、それ以外の変換は実施されることなくビット配列戻り値に入れられます。

CCSID のみを指定する場合、ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、またはデータの中に、指定されたコード・ページには変換できない UNICODE 文字が含まれていた場合、この関数は変換エラーを報告します。

変更の始まりCHARACTER変更の終わり 変更の始まりBLOB変更の終わり 変更の始まりこのキャストは次の 2 つの方法で作動します。
  1. CCSID 文節または ENCODING 文節のいずれかを指定する場合、ストリング全体は要求したコード・ページまたはエンコード方式で書き出されます。 例えば、CCSID 850 のストリング「Cat」は、16 進数で 43、61、74 という 3 バイトの配列になります。
  2. CCSID 文節と ENCODING 文節のいずれも指定しない場合、ストリング自体に X'hhhhhh' または hhhhhh (h は任意の 16 進文字) の形式の 2 文字の 16 進数字が含まれなければなりません。 この場合、入力ストリング「436174」は、同じ 3 バイトの 2 進配列 (43、61、74) となります。

    入力ストリングが不適切な形式となっている場合には、エラーが生成される点に注意してください。

CCSID のみを指定する場合、ビッグ・エンディアン・エンコード方式と見なされます。

エンコード方式だけが指定する場合、CCSID は 1208 になります。

コード・ページまたはエンコード方式が未知のものである場合、またはデータの中に、指定されたコード・ページには変換できない UNICODE 文字が含まれていた場合、この関数は変換エラーを報告します。

変更の終わり
CHARACTER BOOLEAN 文字ストリングは、ブール・リテラルと同じ方法で解釈されます。つまり、文字ストリングは、ストリング TRUE、FALSE、または UNKNOWN (大/小文字の組み合わせは自由) のいずれかでなければならないということです。
CHARACTER CHARACTER 結果は入力と同じです。
CHARACTER DATE FORMAT 文節を指定しない場合、文字ストリングは、日付リテラルまたは日付ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、DATE '2002-10-05' か 2002-10-05 のどちらかです。

日時をストリングとしてフォーマット設定および構文解析するも参照してください。

CHARACTER DECIMAL 文字ストリングは、正確な数値リテラルが、ストリングの形式で定義される scaleprecision を使用した一時的な 10 進数の結果を形成するために解釈されるのと同じ方法で解釈されます。これは、指定した precisionscale の 10 進数に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。

precisionscale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。

FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。

CHARACTER FLOAT 文字ストリングは、浮動小数点リテラルと同じ方法で解釈されます。

FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。

CHARACTER GMTTIME 文字ストリングは、GMT 時刻リテラルまたは時刻ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、GMTTIME '09:24:15' か 09:24:15 のどちらかです。

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

CHARACTER GMTTIMESTAMP 文字ストリングは、GMT タイム・スタンプ・リテラルまたはタイム・スタンプ・ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、GMTTIMESTAMP '2002-10-05 09:24:15' か 2002-10-05 09:24:15 のどちらかです。

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

CHARACTER INTEGER 文字ストリングは、整数リテラルと同じ方法で解釈されます。

FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。

CHARACTER INTERVAL 文字ストリングは、CAST 関数で指定したのと同じ interval qualifier をもつインターバル・リテラルの規則に準拠していなければなりません。あるいは、指定した interval qualifier に適用されるインターバル・ストリングの規則に準拠していなければなりません。
CHARACTER TIME 文字ストリングは、時刻リテラルまたは時刻ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、TIME '09:24:15' か 09:24:15 のどちらかです。

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

CHARACTER TIMESTAMP 文字ストリングは、タイム・スタンプ・リテラルまたはタイム・スタンプ・ストリングの規則に準拠していなければなりません。つまり、文字ストリングは、TIMESTAMP '2002-10-05 09:24:15' か 2002-10-05 09:24:15 のどちらかです。

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

DATE CHARACTER 結果は、日付リテラルの定義に準拠するストリングになり、解釈された値は、ソース日付値と同じになります。
以下に例を示します。
CAST(DATE '2002-10-05' AS CHARACTER)
この場合、以下が戻されます。
DATE '2002-10-05'

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

DATE DATE 結果は入力と同じです。
DATE GMTTIMESTAMP 結果は、ソース日付値を基にした日付フィールドと、現在 GMT 時刻を基にした時刻フィールドを持つ値になります。
DATE TIMESTAMP 結果は、ソース日付値を基にした日付フィールドと、現在時刻を基にした時刻フィールドを持つ値になります。
DECIMAL CHARACTER 結果は、正確な数値リテラルの定義に準拠する最短の文字ストリングになり、解釈された値は 10 進数形式の値になります。

FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。

DECIMAL DECIMAL

値は、指定された precisionscale に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。precisionscale を指定しない場合は、値 precisionscale は元のままで、NOOP (ノーオペレーション) です。

DECIMAL FLOAT 数値は、必要に応じて丸められて変換されます。
DECIMAL INTEGER

値は四捨五入して整数に変換され、変換の結果として有効数字が失われる場合は、実行時エラーが生成されます。

DECIMAL INTERVAL 指定した interval qualifier のフィールドが 1 つだけの場合は、結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは正確な数値と等しくなります。それ以外の場合は、実行時エラーが生成されます。
FLOAT CHARACTER 結果は、近似数値リテラルの定義に準拠する最短の文字ストリングになり、小数部は 0 ではない 1 つの数字と、その後ろにピリオドと符号なし整数が続くという構成になっており、解釈された値は浮動形式の値になります。

FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。

FLOAT FLOAT 結果は入力と同じです。
FLOAT DECIMAL

値は、四捨五入され、指定した precisionscale の 10 進数に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。precisionscale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。

FLOAT INTEGER

値は四捨五入して整数に変換され、変換の結果として有効数字が失われる場合は、実行時エラーが生成されます。

FLOAT INTERVAL 指定した interval qualifier のフィールドが 1 つだけの場合は、結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは数値と等しくなります。それ以外の場合は、実行時エラーが生成されます。
GMTTIME CHARACTER 結果は、GMTTIME リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。 結果ストリングは、GMTTIME 'hh:mm:ss' という形式になります。

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

GMTTIME GMTTIME 結果は入力と同じです。
GMTTIME TIME 結果の値は、ソース値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値になります。時フィールドは、モジュロ 24 として計算されます。
GMTTIME GMTTIMESTAMP 結果は、現在日付を基にした日付フィールドと、ソース GMT 時刻値を基にした時刻フィールドを持つ値になります。
GMTTIME TIMESTAMP 結果は、現在日付を基にした日付フィールドと、ソース GMT 時刻値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値を基にした時刻フィールドを持つ値になります。
GMTTIMESTAMP CHARACTER 結果は、GMTTIMESTAMP リテラルの定義に準拠するストリングになり、解釈された値は、ソース値と同じになります。結果ストリングは、GMTTIMESTAMP 'yyyy-mm-dd hh:mm:ss' という形式になります。

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

GMTTIMESTAMP DATE 結果は、ソースGMTTIMESTAMP 値の日付フィールドで構成されるフィールドを持つ値になります。
GMTTIMESTAMP GMTTIME 結果は、ソース GMTTIMESTAMP 値の時刻フィールドで構成されるフィールドを持つ値になります。
GMTTIMESTAMP TIME 結果は、ソース GMTTIMESTAMP 値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値を基にした時刻フィールドを持つ値になります。 時フィールドは、モジュロ 24 として計算されます。
GMTTIMESTAMP GMTTIMESTAMP 結果は入力と同じです。
GMTTIMESTAMP TIMESTAMP 結果の値は、ソース値にローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を足した値になります。
INTEGER BIT 指定された整数は、エレメント数が最大で 263 個のビット配列に変換されます。
INTEGER BLOB 指定された整数は、エレメント数が最大で 263 個のバイト配列に変換されます。
INTEGER CHARACTER 結果は、正確な数値リテラルの定義に準拠する最短の文字ストリングになり、解釈された値は整数の値になります。

FORMAT 文節を指定する場合は、動作は変わります。数値をストリングとしてフォーマット設定および構文解析するも参照してください。

INTEGER FLOAT 数値は、必要に応じて丸められて変換されます。
INTEGER INTEGER 結果は入力と同じです。
INTEGER DECIMAL

値は、指定した precisionscale の 10 進数に変換されます。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。precisionscale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。

INTEGER INTERVAL 指定した interval qualifier のフィールドが 1 つだけの場合は、結果は、その修飾子をもつインターバルとなり、修飾子のフィールドは正確な数値と等しくなります。それ以外の場合は、実行時エラーが生成されます。
INTERVAL CHARACTER 結果は、INTERVAL リテラルの定義に準拠するストリングになり、解釈された値は、ソース・インターバル値と同じになります。
以下に例を示します。
CAST(INTERVAL '4' YEARS AS CHARACTER)
この場合、以下が戻されます。
INTERVAL '4' YEARS
INTERVAL DECIMAL

インターバル値の修飾子にフィールドが 1 つしかない場合、結果は、値に指定された precision および scale の 10 進数になります。変換の結果、有効数字が失われる場合は、実行時エラーが生成されます。インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、実行時エラーが生成されます。precisionscale を指定しない場合は、指定された値を保持するのに最低限必要な precision および scale が設定されます。

INTERVAL FLOAT インターバル値の修飾子のフィールドが 1 つだけの場合は、結果はその値をもつ浮動小数点になります。インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、実行時エラーが生成されます。
INTERVAL INTEGER

インターバル値の修飾子のフィールドが 1 つだけの場合は、結果はその値をもつ整数になります。インターバル値の修飾子のフィールドが複数ある場合 (YEAR TO MONTH など) は、実行時エラーが生成されます。

INTERVAL INTERVAL 結果は入力と同じです。

年 - 月のインターバルは年 - 月のインターバルにのみ、また、日 - 秒のインターバルは日 - 秒のインターバルにのみ変換できます。ソース・インターバルはスカラーに変換され、その際の単位は、ターゲット interval qualifier の最小の有効フィールドの単位になります。この値は、ターゲット interval qualifier を使用したインターバルに正規化されます。例えば、MINUTE TO SECOND という修飾子のインターバルを、DAY TO HOUR という修飾子のインターバルに変換するには、ソース値が時間単位のスカラーに変換され、次いでその値は、DAY TO HOUR という修飾子のインターバルに正規化されます。

TIME CHARACTER 結果は、TIME リテラルの定義に準拠するストリングになり、解釈された値は、ソース時刻値と同じになります。
以下に例を示します。
CAST(TIME '09:24:15' AS CHARACTER)
この場合、以下が戻されます。
TIME '09:24:15'

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

TIME GMTTIME 結果の値は、ソース値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値になります。時フィールドは、モジュロ 24 として計算されます。
TIME GMTTIMESTAMP 結果は、現在日付を基にした日付フィールドと、ソース GMT 時刻値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値を基にした時刻フィールドを持つ値になります。
TIME TIME 結果は入力と同じです。
TIME TIMESTAMP 結果は、現在日付を基にした日付フィールドと、ソース時刻値を基にした時刻フィールドをもつ値になります。
TIMESTAMP CHARACTER 結果は、TIMESTAMP リテラルの定義に準拠するストリングになり、解釈された値は、ソース・タイム・スタンプ値と同じになります。
以下に例を示します。
CAST(TIMESTAMP '2002-10-05 09:24:15' AS CHARACTER)
この場合、以下が戻されます。
TIMESTAMP '2002-10-05 09:24:15'

FORMAT 文節を指定する場合は、動作は変わります。日時をストリングとしてフォーマット設定および構文解析するも参照してください。

TIMESTAMP DATE 結果は、ソース・タイム・スタンプ値の日付フィールドで構成されるフィールドをもつ値になります。
TIMESTAMP GMTTIME 結果は、ソース TIMESTAMP 値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値を基にした時刻フィールドを持つ値になります。 時フィールドは、モジュロ 24 として計算されます。
TIMESTAMP GMTTIMESTAMP 結果の値は、ソース値からローカル時間帯変位 (LOCAL_TIMEZONE によって戻される) を引いた値になります。
TIMESTAMP TIME 結果は、ソース・タイム・スタンプ値の時刻フィールドで構成されるフィールドをもつ値になります。
TIMESTAMP TIMESTAMP 結果は入力と同じです。
表 2. サポートされているキャスト: ソース・データ・タイプからターゲット・データ・タイプへの多対 1 マッピング
ソース・データ・タイプ ターゲット・データ・タイプ 効果
Numeric, Numeric, Numeric DATE 年、月、および日の順序の数値から、DATE 値を作成します。整数でない値は丸められます。
Numeric, Numeric, Numeric TIME 時、分、および秒の順序の数値から、TIME 値を作成します。時分の整数でない値は丸められます。
Numeric, Numeric, Numeric GMTIME 時、分、および秒の順序の数値から、GMTTIME 値を作成します。時分の整数でない値は丸められます。
Numeric, Numeric, Numeric, Numeric, Numeric, Numeric TIMESTAMP 年、月、日、時、分、および秒の順序の数値から、TIMESTAMP 値を作成します。年、月、日、時、および分の整数でない値は丸められます。
Numeric, Numeric, Numeric, Numeric, Numeric, Numeric GMTTIMESTAMP 年、月、日、時、分、および秒の順序の数値から、GMTIMESTAMP 値を作成します。年、月、日、時、および分の整数でない値は丸められます。
DATE, TIME TIMESTAMP 結果は、指定された DATE および TIME の TIMESTAMP 値になります。
DATE, GMTTIME GMTIMESTAMP 結果は、指定された DATE および GMTTIME の GMTTIMESTAMP 値になります。
Numeric, Numeric INTERVAL YEAR TO MONTH 結果は、最初のソースを年とし 2 番目のソースを月とした INTERVAL になります。整数でない値は丸められます。
Numeric, Numeric INTERVAL HOUR TO MINUTE 結果は、最初のソースを時間とし 2 番目のソースを分とした INTERVAL になります。整数でない値は丸められます。
Numeric, Numeric, Numeric INTERVAL HOUR TO SECOND 結果は、ソースをそれぞれ時間、分、および秒とした INTERVAL になります。時分の整数でない値は丸められます。
Numeric, Numeric INTERVAL MINUTE TO SECOND 結果は、ソースをそれぞれ分および秒とした INTERVAL になります。分の整数でない値は丸められます。
Numeric, Numeric INTERVAL DAY TO HOUR 結果は、ソースをそれぞれ日および時間とした INTERVAL になります。整数でない値は丸められます。
Numeric, Numeric, Numeric INTERVAL DAY TO MINUTE 結果は、ソースをそれぞれ日、時間、および分とした INTERVAL になります。整数でない値は丸められます。
Numeric, Numeric, Numeric, Numeric INTERVAL DAY TO SECOND 結果は、ソースをそれぞれ日、時間、分、および秒とした INTERVAL になります。日、時間、および分の整数でない値は丸められます。
Numeric INTERVAL YEAR 結果は、ソースを年とした INTERVAL になり、必要に応じて丸められます。
Numeric INTERVAL MONTH 結果は、ソースを月とした INTERVAL になり、必要に応じて丸められます。
Numeric INTERVAL DAY 結果は、ソースを日とした INTERVAL になり、必要に応じて丸められます。
Numeric INTERVAL HOUR 結果は、ソースを時間とした INTERVAL になり、必要に応じて丸められます。
Numeric INTERVAL MINUTE 結果は、ソースを分とした INTERVAL になり、必要に応じて丸められます。
Numeric INTERVAL SECOND 結果は、ソースを秒とした INTERVAL になります。
関連概念
ESQL の概要
ESQL データ・タイプ
関連タスク
ESQL の開発
関連資料
複合 ESQL 関数
CAST 関数
暗黙のキャスト
外部ソースの値のデータ・タイプ
サポートされるコード・ページ
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ak05680_