SELECT 関数

SELECT は、複合メッセージおよびデータベース・データを結合し、フィルターに掛け、再フォーマットします。

構文

  • Source はフィールド、フィールド配列、またはデータベース・テーブルの参照です。
  • Alias は一時変数名です。
  • Condition はブール式です。
  • Target は相対パスです。

SELECT は、複合メッセージおよびデータベース・データを結合し、フィルターに掛け、再フォーマットします。 これはメッセージ変換の標準メソッドです。

データベース・テーブル上およびメッセージ上で動作する SELECT には、 構文的、意味的相違はありません。特に以下の点に注目してください。
  • SELECT 文節式はすべてのブローカーの演算子および関数をどのような組み合わせでも使用できます。 SELECT 文節式は、テーブルの列、メッセージ・フィールド、包含している SELECT によって宣言された相関名、 および有効範囲内にある他の宣言済み変数や定数を参照できます。
  • 対応する AS 文節には複数パーツのパスを含めることができます。 たとえば、A.B.C には、A.B.(XML.Attribute)C) のようなフィールド・タイプ指定子、 名前式 (例 A.B.{var})、および索引 (例 A.B.C[i]) を含められます。

    これらのパス内の式はすべてのブローカーの演算子および関数をどのような組み合わせでも使用できます。 式は、テーブルの列、メッセージ・フィールド、包含している SELECT によって宣言された相関名、 および有効範囲内にある他の宣言済み変数や定数を参照できます。

  • FROM 文節には複数のデータベース参照、複数のメッセージ参照、またはこれら 2 つの参照を組み合わせたものが含まれます。 そのため、次の制約事項を考慮しながら、 テーブルとテーブル、メッセージとメッセージ、メッセージとテーブルを結合できます。
    • データベースの FROM 文節式(たとえば、Database.Schema1.Table1)には、いかなる種類の式も含められません。 実行時にスキーマまたはテーブル名を計算できません。
    • FROM 文節がメッセージとテーブルの両方を参照する場合、テーブルがメッセージよりも先ででなければなりません
  • WHERE 文節式はすべてのブローカーの演算子および関数をどのような組み合わせでも使用できます。 式は、テーブルの列、メッセージ・フィールド、包含している SELECT によって宣言された相関名、 および有効範囲内にある他の宣言済み変数や定数を参照できます。 しかし、以下に注意してください。
    • ブローカーは式を検証し、データベースが式全体を評価可能であるかを判別して、 WHERE 文節式を扱います。

      可能である場合、式はデータベースに渡されます。 データベースによる評価が可能であるためには、 データベースにサポートされている関数と演算子のみ使用しなければなりません。

      しかし、依然として、メッセージ・フィールド、包含している SELECT によって宣言された相関名、 および有効範囲内にある他の宣言済み変数や定数を参照できます。

    • データベースが式全体を評価できない場合は、ブローカーはトップレベルの AND 演算子を検索し、副次式を別々に検証します。

      それから、ブローカーに残りの副次式を評価させたまま、データベースに評価可能な副次式を渡すよう試みます。

    この状態に関して以下の 2 つの理由で注意が必要です。
    • WHERE 文節式への小さな変更であっても、パフォーマンスに大きく影響する場合があります。 ユーザー・トレースを調べることにより、データベースに対してどれほどの式が渡されているかを判別できます。
    • データベースの関数の中には、ブローカーの関数とわずかに動作が異なるものがあります。
SELECT を使用すると、以下のことを行えます。
  • メッセージを包括的に再フォーマットする
  • データベース・テーブルにアクセスする
  • 入力配列のサブセットである出力配列を作成する
  • 入力配列の値だけを含む出力配列を作成する
  • 配列内の項目数をカウントする
  • 配列内のいくつかの項目から最小値および最大値を選択する
  • 配列内の値を合計する
ESQL SELECT は、データベースの SQL SELECT と次の点で異なっています。
  • ESQL はツリー構造の結果データを生成できます
  • ESQL は SELECT 文節に配列を受け入れることができます
  • ESQL には THE と ITEM があります
  • ESQL には SELECT ALL がありません
  • ESQL には SELECT DISTINCT がありません
  • ESQL には GROUP BY または HAVING がありません
  • ESQL には AVG 列関数がありません

SELECT 関数の使い方については、以下を参照してください。

関連概念
ESQL

関連タスク
ESQL の開発
単純な XML メッセージの変換
複雑な XML メッセージの変換
XML メッセージでスカラー値を戻す
ユーザー・データベースと相互作用する

関連資料
構文の設定
複合 ESQL 関数