割り当ておよび比較

SQL の基本演算は、割り当てと比較です。割り当て演算は、CALL、INSERT、 UPDATE、FETCH、SELECT、SET 変数、および VALUE INTO ステートメントの実行時に行われます。 比較演算は、述部や他の言語エレメント (MAX、MIN、 DISTINCT、GROUP BY、ORDER BY など) が入っているステートメントを実行する過程で行われます。

これらの演算はいずれも、演算に使用するオペランド間でデータ・タイプに互換性がなければならないという基本的な規則があります。この互換性の規則は、UNION、EXCEPT、INTERSECT、連結、CASE 式、および CONCAT、VALUE、 COALESCE、IFNULL、MIN、MAX スカラー関数にも適用されます。 互換性マトリックスは、次のとおりです。

表 1. データ・タイプの互換性

 
 
 
オペランド
 
 
 

  2 進整数

  10 進数

  浮動小数点数

  10 進 浮動小数点数

  文字ストリング

  グラフィック・ストリング

  2 進ストリング

  日付

  時刻

  タイム・スタンプ

  データ・リンク

  行 ID

  XML 7

  ユーザー定義タイプ

2 進整数 Y Y Y Y Y 1 3
10 進数4 Y Y Y Y Y 1 3
浮動小数点数 Y Y Y Y Y 1 3
10 進浮動小数点数 Y Y Y Y Y 1 3
文字ストリング Y Y Y Y Y 1 2 3
グラフィック・ストリング 1 1 1 1 1 Y 3
2 進ストリング 2 Y 3
日付 Y Y 3
時刻 Y 3
タイム・スタンプ Y Y 3
データ・リンク 5 3
行 ID 6 3
XML 7 Y 3
ユーザー定義タイプ 3 3 3 3 3 3 3 3 3 3 3 3 3 3
注 :
  1. 互換性があるのは Unicode グラフィック・ストリングのみです。Unicode と FOR BIT DATA には、互換性がありません。
  2. FOR BIT DATA を持つものを除いて、文字ストリングは 2 進ストリングとの互換性がありません。FOR BIT DATA 文字ストリングと 2 進ストリングは互換性があると見なされ、 ターゲットのデータ・タイプに基づいて埋め込みが実行されます。 例えば、FOR BIT DATA 列値を固定長 2 進変数に割り当てる場合、 必要な埋め込みでは埋め込みバイトとして X'00' を使用します。
  3. 特殊タイプの値は、同じ特殊タイプで定義された値とのみ比較が可能です。データベース・マネージャーは、一般に、特殊タイプの値とそのソース・データ・タイプ間の 割り当てをサポートしています。追加情報については、特殊タイプの割り当てを参照してください。

    配列タイプの値は、同じ配列タイプで定義された値とのみ比較が可能です。配列タイプの値は、同じタイプの配列に 割り当てることができます。追加情報については、配列タイプの割り当てを参照してください。

  4. 10 進数とは、パック 10 進数とゾーン 10 進数の両方を指します。
  5. データ・リンク・オペランドは、別のデータ・リンク・オペランドに対してのみ割り当てることができ、 どんなデータ・タイプについても比較はできません。
  6. ROWID オペランドは、別の ROWID オペランドに対してのみ割り当てることができ、 どんなデータ・タイプについても比較はできません。
  7. 文字ストリングとグラフィック・ストリングを XML 列に割り当てることはできます。 ただし、XML は、文字ストリング列またはグラフィック・ストリング列に割り当てることはできません。比較の場合は、IS NULL 述部で比較するというのが、XML を比較する唯一の方法です。

割り当て演算には、以下のものに NULL 値を割り当てることはできないという基本的な規則があります。

  • NULL 値を組み込めない列
  • 関連する標識変数を持たないホスト変数
  • プリミティブ・タイプの Java™ ホスト変数

標識変数については、ホスト変数に対する参照を参照してください。

NULL 値が関係する比較での NULL 値の具体的な処理については、 比較演算の説明を参照してください。