各SELECT文の中の対応するフィールドのデータ型には互換性が必要です。例えば、最初のSELECT文の最初のフィールドが文字のデータ型の場合、後続の各SELECT文の最初のフィールドも、文字のデータ型でなければなりません。
対応する数値型は同じである必要はありませんが、互換性がなければなりません。例えば、1つのSELECT文の中のフィールドをINTEGERとして定義し、別のSELECT文の対応するフィールドをSMALLINTとして定義できます。
最初のSELECT文のデータ型によって、結果セットの対応する列のデータ型が決まります。
以下のテーブルは、データ型の互換性の詳細をまとめたものです。
データ型 | 詳細 |
---|---|
Character | 最初のSELECT文の文字型では、結果セットの文字列の長さが決定されます。そのため、最初のSELECT文の文字型の長さが後続のSELECT文の対応する文字型の長さより短い場合に、結果セットの文字列で切り捨てが行なわれることがあります。 最初のSELECT文に含まれる式の文字セットによって、問合わせ全体の文字セットが決まります。 |
Numeric | 最初のSELECT文の数値タイプにより、結果セットの数値タイプのサイズが決定されます。後続のSELECT文の対応するすべての数値フィールドが、最初のSELECT文の数値データ型に変換されます。このため、最初のSELECT文の数値タイプのサイズが後続のSELECT文の対応する数値タイプのサイズより小さい場合は、数値のオーバーフロー エラーが発生することがあります。また、後続の文によって返される値は、より小さいデータ型には適合しません。 |
TIME TIMESTAMP PERIOD(TIME) PERIOD(TIMESTAMP) |
最初のSELECT文のTIME、TIMESTAMP、PERIOD(TIME)、およびPERIOD(TIMESTAMP)型により、結果セット内の対応する行の精度が決定されます。後続のSELECT文の対応するすべてのフィールドが、最初のSELECT文のデータ型に暗黙的に変換されます。対応するフィールドにタイムゾーンがなく、最初のSELECT文のデータ型にタイムゾーンがある場合、タイムゾーンは、現在のセッションのタイムゾーンの変位に設定されます。対応するフィールドの精度が最初のSELECT文のデータ型の精度より低い場合は、必要に応じて小数桁にゼロが追加されます。後続のSELECT文の対応するフィールドの精度が、最初のSELECT文のデータ型の精度より高い場合は、エラーが報告されます。 |