WHERE と ORDER BY 句の作成

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > MapForce とデータベース > データベースデータのフィルターと並べ替え (SQL WHERE/ORDER) >

WHERE と ORDER BY 句の作成

SQL WHERE/ORDER コンポーネントがマッピングに追加されると、コンポーネントに接続されるデータをフィルターする方法を定義することのできる WHERE 条件 (句) が必要になります。WHERE 条件は、MapForce の 「SQL WHERE/ORDER プロパティ」 ダイアログボックスに入力される必要があります。

 

MapForce から WHERE 条件を作成することは、 MapForce 外で同じ SQL 句を作成することと類似しています。対応するデータベースの SQL 言語に適応される構文を使用してください。 例えば、演算子、ワイルドカード、サブセレクト 、または、 集計関数を使用することもできます。マッピングからパスすることのできるパラメーターを作成し、後にパラメーター名が続くセミコロン文字 ( : ) を入力します。

 

メモ:WHERE 句の作成が終わると、「OK」 をクリックします。MapForce は最後の SQL ステートメントの整合性を検証します。構文エラーが存在するとダイアログボックスがプロンプトを表示します。

 

以下の演算子を WHERE コンポーネントにて使用することができます:

演算子

説明

=

等価

<>

異なる

<

未満

>

を超える

>=

以上

<=

以下

IN

指定した値をカラムから検索

LIKE

指定したパターンを検索

BETWEEN

指定した範囲を検索

% (パーセント) ワイルドカードを使用して、パターン内の文字数を示します。例えば、 lastname という名前のフィールドから「r」で終わる記録を全て抽出します。

lastname = "%r"

XML データベースデータの保管とクエリをサポートするデータベース (例えば、 IBM DB2、Oracle、SQL Server) をクエリする場合、その特定のデータベースに適用することのできる XML 関数をキーワードを使用することができます。例:

xmlexists('$c/Client/Address[zip>"55116"]' passing USER.CLIENTS.CONTACTINFO AS "c")

次も参照してください: サンプル: IBM DB2 XML 型列からデータを抽出する

 

任意で特定のフィールドにより抽出されたレコードセットを並べ替えるには、「SQL WHERE/ORDER プロパティ」 ダイアログボックスの対応するテキストボックスにORDER BY 句 を追加します。複数のフィールドを並べ替えるには、 フィールド名 をコンマで区切ります。並べ替えの順序を変更するには、 ASCDESC キーワードを使用します。例えば、 次の ORDER BY 句は、 lastnamefirstname により降順に順序付けられたレコードを抽出します:

lastname, firstname DESC

 

サンプル 1

次の WHERE 条件は altova.mdb データベース コンポーネントの Person テーブルに添付されています。これは FirstLast が文字 「C」 より大きいレコードを抽出します。すなわち、「Callaby」 以降の名前をすべて抽出します。SELECT 文により First ならびに Last 内にあるコンテンツが C という文字より大きなレコードが取得されます。altova.mdb サンプルファイルの Person テーブルにある Last を例にすると、Callaby 以降のレコードが取得されます。

First > "C" AND Last > "C"

どのように接続が作成されているかに注目してください:

 

問い合わせを行いたいテーブル(この場合は 「Person」)から table/field パラメーターへの接続を作成します。
result パラメーターを、問い合わせ/フィルタリングを行ったフィールドの「親」アイテム(この場合は Person アイテム)へ接続します。First ならびに Last のフィールドがターゲットコンポーネントに接続され、マッピングの結果に表示されます。

whereeg-1

 

 

サンプル 2

この WHERE ステートメントにより、SQL WHERE/ORDER コンポーネントのパラメーターとして Name が作成されます。この場合、「Last」 カラムにてパターンの検索が行われます。ワイルドカードの % により、任意の数の文字が指定されます。

Last LIKE :Name

sql-where4a

定数 コンポーネント %SName パラメーターの値を与えます。ワイルドカード % は文字数を表示します。これにより、マッピングが列 「Last」 内のパターン(「S」 で終わる名前)を検索します。

 

 

サンプル 3

この WHERE 句により、PhoneUpper と PhoneLower という 2 つのパラメーターが作成され、PhoneExt の値が比較されます。上限の値と下限の値は、以下のマッピングに示される通り、定数コンポーネントにより与えられます。

PhoneExt < :PhoneUpper and PhoneExt > :PhoneLower

whereeg-3

この例にある WHERE 句では、BETWEEN 演算子を使用することもできます

PhoneExt BETWEEN :PhoneUpper and :PhoneLower


(C) 2019 Altova GmbH