条件の設定
ここでは「クエリ」でクエリの作成時に設定する「条件」について説明します。
内容
条件の設定
「条件」とはテーブルの全レコードに対する絞り込みの設定のことです。
番号1のセレクトボックスは条件に指定したいカラム名を選択します。
番号2のセレクトボックスは使用する演算子を設定します。選択できる演算子は「=」、「>」、[<]、「>=」、[<=]、「<>」、[like]、[in] の8つです。
「=」は等値、「>」は大なり、[<] は小なり、「>=」は等しいかそれ以上、[<=] は等しいかそれ以下、「<>」は等しくないをを表します。
[like]はパターンマッチに、「in」は副問い合わせに使用します。詳しくは複雑な条件を参照してください。
番号3のセレクトボックスでは条件に指定したい値の種類を選択します。選択した種類により>番号4の入力エリアは変わります。
値の種類は「固定値」に指定する場合に、 番号4に定数または文字列を入力します。
値の種類はデバイスの「変数」を指定する場合に、番号4にHMIの変数のを指定します。変数を指定する場合に、「デバイスツリー」ボタンをクリックして、変数を選択することが可能です。
値の種類は「時間指定」に指定する場合に、番号4に時分秒などの時間を指定することができます。
値の種類は「SQL文」に指定する場合に、番号4SQL文を入力することが可能です。
値の種類は「isNULL」に指定する場合に、値はNULLを指定することで、入力する項目がありません。
「isNULL」を選択した場合、番号2の入力エリアで「=」以外を選ぶとnotNULLとして扱います。「時間指定」を選択した場合の詳しい設定方法は複雑な条件を参照してください。
番号5のセレクトボックスはAND句とOR句を選択できます。
番号4の入力は以下を注意してください:
番号3で「変数」以外を選んだ場合、番号4に変数名を直接入れても、文字列として判断されてしまいます。
番号3で「固有値」を選択した場合、値に'シングルコーテーション'や"ダブルコーテーション"等のSQL文にふさわしくない文字の使用は避けてください
番号3で「SQL文」を選択した場合、番号4の入力エリアはもっとも自由度の高い状態になります。使用する際は細心の注意が必要です。
「SQL文」を使用する場合はpostgreSQLのヘルプ等を参照してください
複雑な条件
ここでは少し複雑な条件について記述します。
LIKE(LIKE演算子)
番号2で選択できる演算子で、値に対しパターンマッチを行います。使用する場合、基本は番号3で固有値を使用することになります。
まず、以下に簡単な例をあげます
文 番号3の入力値 結果 'WEB' LIKE 'WEB' WEB true 'WEB' LIKE 'E' E false 'WEB' LIKE 'W%' W% true 'WEB' LIKE 'WE%B' WE%B true 'WEB' LIKE '_E_' _E_ true 'WEB' LIKE 'WE_B' WE_B false
上の表は文字列'WEB'に対してのパターンマッチの結果を表しています。
パーセント記号(%)もしくはアンダースコア(_)を含んでいない場合は等値[=]と同じ働きをします。
アンダースコア(_)は任意の一文字との一致を表し、パーセント記号(%)は0文字以上の並びとの一致を表します。
LIKE演算子を用いることで _timestamp_ LIKE '1997-07-26%' と表現し時間を検索できますが実行は遅いです。
IN(IN演算子)
番号2で選択できる演算子で、値に対し副問い合わせを行います。使用する場合、基本は番号3でSQL文を使用することになります。
INの使用にはSQLに対する知識が必要になります。
ANDとORを混在させ多数の条件が必要な場合、IN演算子を使うことで、条件の設定を簡潔にすることができる場合があります。
下に使用例をあげます。
カラム名a(以下、カラムa)の値が20以上でカラムbの値が1か5か10のレコードを選択したい場合
INを使用しない場合のこの条件の設定は以下のようになります。
作成される条件文: a >= '20' and b = '1' or a >= '20' and b = '5' or a >= '20' and b = '10'
INを使用しするとこの条件の設定は以下のようになります。
作成される条件文: a <= '20' and b in( '1' , '5' , '10' );
この場合はIN演算子を使うことで作成する条件の数が減り、必要な作業が少なくなります。
また、入力値にselect文を入力することも可能ですが、実行側では入力値のチェックを行いません。設定が間違った場合にクエリの実行時、重大なエラーが起きる場合があります。
この点からselect文の使用は推奨いたしません。
時間指定
番号3で「時間指定」を選択した場合の、番号4は一番上のセレクトボックスの状態により3種類の入力エリアを提供します。
「今」を選択した場合と「今日」「先週」「先月1日」を選択した場合、「固定時刻」を選択した場合でわかれています。
「今」,「今日」,「先週」,「先月1日」を選した場合に表示される赤色で囲まれた部分は選択された時間からの経過時間を設定します。
-を入力することで過去になります。
「今日」,「先週」,「先月1日」を選した場合に表示される青色で囲まれた部分は選択された時間の時刻を設定します。
「固定時刻」を選択した場合に表示される緑色で囲まれた部分は選択されたのは固定の時刻を設定します。
条件の作成
ここでは実際にいくつかの条件指定に関して説明します。
範囲を設定する
”1から10の間”,”昨日から今日まで”等の範囲や期間を指定する場合、「>」、[<]、「>=」、[<=]を使い、以下のように表現します。
データの書き換え
「更新」時、条件を満たした記録は、「書き込みデータ」のカラムで指定したカラムのデータがすべて上書きすることになります。
aの値が1のレコードをaの値を-1に書き換えたい場合クエリ例: update dbo.example_table set a = '-1' where a = '1';