列ごとの行選択

列ごとに行選択基準を入力するには、「Column Selection/Edit (列選択/編集)」パネルのコマンド行で 1 を入力し、Enter キーを押します。FM/Db2 は、「Row Selection Criteria (行選択基準)」パネルを表示します。

選択基準を指定する各列の行で、演算子 (= または > など) を Op 列に、またほとんどの場合Value (値)」列に値を指定します。

例えば、姓が SMITH の従業員のみを従業員の表から選択するには、以下のようにします。

  1. 列 LASTNAME の行で、Op 列に = を入力し、「Value (値)」列に SMITH (オプションで一重引用符で囲む) を入力します。
    1. 例 1: 単一値に一致する単純な述部を指定
    Cmd Con ( Column name                    Data type(length)    Op  Value
        <-> - <---+----1----+----2----+----> <---+----1----+----> <-> <---+----
    *** ****  Top of data  ****
              EMPNO                          CHARACTER(6)
        AND   FIRSTNME                       VARCHAR(12)
        AND   MIDINIT                        CHARACTER(1)
        AND   LASTNAME                       VARCHAR(15)          =   SMITH

    この述部は、表のデータが大文字で保管されているシチュエーションで、理想的に動作します。ただし、表のデータが大/小文字混合 (「Smith」など) であるか、またはデータに誤り (「SmiTH」など) が含まれている場合、Db2® は目的の行の一部を返しません。

    通常、「Op」列に入力された演算子は、列名に影響しません。以下の 2 つの演算子によって、列関数を指定できます。
    LKL
    この式から得られる結果: LOWER(colname) LIKE 値。
    LKU
    この式から得られる結果: UPPER(colname) LIKE 値。
    次の例では、値にある大文字によって一致は得られないため、FM/Db2 は自動的に、入力された値を小文字に変換します。詳しくは、『例 2 の式から生成されるデータ』を参照してください。
    2. Example 2: LKL 演算子の指定
    Cmd Con ( Column name                    Data type(length)    Op  Value
         <-> - <---+----1----+----2----+----> <---+----1----+----> <-> <---+----1----+----2
     *** ****  Top of data  ****
               EMPNO                          CHARACTER(6)
         AND   FIRSTNME                       VARCHAR(12)                                  
         AND   MIDINIT                        CHARACTER(1)                                 
         AND   LASTNAME                       VARCHAR(15)          LKL '%SMITH%'
    次の例では、値にある小文字によって一致は得られないため、FM/Db2 は自動的に、入力された値を大文字に変換します。詳しくは、『例 3 の式から生成されるデータ』を参照してください。
    3. 例 3: LKU 演算子の指定
    Cmd Con ( Column name                    Data type(length)    Op  Value               
        <-> - <---+----1----+----2----+----> <---+----1----+----> <-> <---+----
    *** ****  Top of data  ****                                                           
              EMPNO                          CHARACTER(6)                                 
        AND   FIRSTNME                       VARCHAR(12)                                  
        AND   MIDINIT                        CHARACTER(1)                                 
        AND   LASTNAME                       VARCHAR(15)          LKU '%smith%'

    必要に応じて、列式を直接指定することもできます。列式を入力するためには、式が必要な列名に対して、EDITCOL エディター基本コマンドを実行するか、または EC 接頭部コマンドを入力します。これらのコマンドを実行した後、列名フィールドは入力フィールドに変わります。

    例 4: エスケープ文字を使用して列式およびデータ値を入力 には、列式と「」エスケープ文字の使用法が示されています。この例は、従業員が 3 月に雇用された行をどのように表示するかを説明しています。エスケープ文字を使用すると、FM/Db2 は、タイプに応じた値フィールドのデータの検証を試みません。列のデータ・タイプは DATE ですが、列関数 MONTH は、月を表す整数 (1 から 12) を返します。
    4. 例 4: エスケープ文字を使用して列式およびデータ値を入力
    Cmd Con ( Column name                    Data type(length)    Op  Value    
        <-> - <---+----1----+----2----+----> <---+----1----+----> <-> <---+----
    *** ****  Top of data  ****                                                
              EMPNO                          CHARACTER(6)                      
        AND   FIRSTNME                       VARCHAR(12)                       
        AND   MIDINIT                        CHARACTER(1)                      
        AND   LASTNAME                       VARCHAR(15)                       
        AND   WORKDEPT                       CHARACTER(3)                      
        AND   PHONENO                        CHARACTER(4)                      
        AND   MONTH(HIREDATE)                                     =   \3
  2. Exit function key (F3) を押します。

    FM/Db2 は、パネル上部の「Row Selection Criteria (行選択基準)」フィールドに、生成された行選択基準 (WHERE 文節) が示された、「Column Selection/Edit (列の選択/編集)」パネルを表示します。

    例 1 から例 4 で入力された式の結果は、以下のとおりです。
    5. 例 1 の式から生成される式
     Process   Options   Utilities   Help                   
    --------------------------------------------------------
    FM/Db2 (DFG2)                                         Co
    Command ===>                                            
    TABLE DSN81010.EMP                                      
    --------------------------------- Row Selection Criteria
    1 Sel: WHERE "LASTNAME" = 'SMITH'
    6. 例 2 の式から生成されるデータ
     Process   Options   Utilities   Help                   
    --------------------------------------------------------
    FM/Db2 (DFG2)                                         Co
    Command ===>                                            
    TABLE DSN81010.EMP                                      
    --------------------------------- Row Selection Criteria
    1 Sel: WHERE LOWER("LASTNAME") LIKE '%smith%'
    7. 例 3 の式から生成されるデータ
     Process   Options   Utilities   Help                   
    --------------------------------------------------------
    FM/Db2 (DFG2)                                         Co
    Command ===>                                            
    TABLE DSN81010.EMP                                      
    --------------------------------- Row Selection Criteria
    1 Sel: WHERE UPPER("LASTNAME") LIKE '%SMITH%'
    8. 例 4 の式から生成されるデータ
     Process   Options   Utilities   Help                   
    --------------------------------------------------------
    FM/Db2 (DFG2)                                         Co
    Command ===>                                            
    TABLE DSN81010.EMP                                      
    --------------------------------- Row Selection Criteria
    1 Sel: WHERE MONTH(HIREDATE) = 3
  3. Exit function key (F3) を押します。
    FM/Db2 には、選択したデータが表示されます。
    9. 例 1 から例 4 の式から得られるデータ
    FM/Db2 (DFG2)                                               Table Edit        
    Command ===>                                                                  
    2 rows - End of object.                                                       
           EMPNO  FIRSTNME     MIDINIT LASTNAME        WORKDEPT PHONENO HIREDATE  
           #1     #2           #3      #4              #5       #6      #7        
           CH(6)  VARCHAR(12)  CH(1)   VARCHAR(15)     CH(3)    CH(4)   DATE      
           PUN-+> <-N-+----1-> -       <-N-+----1----> <-N      <-->    <---+---->
    ****** ****  Top of data  ****                                                
    000001 000250 DANIEL<      S       SMITH<          D21      0961    1969-10-30
    000002 000300 PHILIP<      X       SMITH<          E11      2095    1972-06-19
    10. 例 4 の式から得られるデータ
    FM/Db2 (DFG2)                                               Table Edit        
    Command ===>                                                                  
    3 rows - End of object.                                                       
           EMPNO  FIRSTNME     MIDINIT LASTNAME        WORKDEPT PHONENO HIREDATE  
           #1     #2           #3      #4              #5       #6      #7        
           CH(6)  VARCHAR(12)  CH(1)   VARCHAR(15)     CH(3)    CH(4)   DATE      
           PUN-+> <-N-+----1-> -       <-N-+----1----> <-N      <-->    <---+---->
    ****** ****  Top of data  ****                                                
    000001 000200 DAVID<               BROWN<          D11      4501    1966-03-03
    000002 000280 ETHEL<       R       SCHNEIDER<      E11      8997    1967-03-24
    000003 200280 EILEEN<      R       SCHWARTZ<       E11      8997    1967-03-24

例 1: 単一値に一致する単純な述部を指定 で入力された式を続行するにあたって、例えば、ここで、姓が SMITH または JONES の従業員を選択する場合は、行選択基準を変更する必要があります。これを行うには、「Row Selection Criteria (行選択基準)」パネルに戻る必要があります。

  1. 表示されたデータのパネルから、Exit function key (F3) を押し、「Db2® Edit (編集)」入力パネルに戻ります。
  2. Edit template (テンプレートの編集)」フィールドを選択し、Exit function key (F3) を押して「Column Selection/Edit (列の選択/編集)」パネルを表示します。

    このパネルの「Row Selection Criteria (行選択基準)」フィールド (前の WHERE "LASTNAME" = 'SMITH' 文節が表示されています) は保護されていることがわかります。これは、列ごとにまたはフリー・フォーム式で入力された行選択基準は交換可能でないためです。「Row Selection Criteria (行選択基準)」パネルに戻ることにより、列ごとに入力された行選択基準を変更できます。「Column Selection/Edit (列の選択/編集)」で SQL コマンドを発行して、データを保管することにより、列ごとに入力した行選択基準からフリー・フォーム式に変換できます。変換により、列ごとの指定は除去されます。フリー・フォーム式から列ごとに入力された行選択基準に変換することはできません。

  3. コマンド行に 1 を入力して、「Row Selection Criteria (行選択基準)」パネルを表示します。
  4. 同一の列で複数の値を選択する (この場合、SMITH と JONES の両方を選択します) には、以下の 2 つの方法を使用できます。
    • 以下のように、列に対して複数行を使用する。
      1. 該当する列の名前の行を繰り返すには、Cmd 列で R (反復) 接頭部コマンドを入力します。
      2. 列名の反復される行で、AND に O または OR を上書きして、結合子 (Con 列内) を OR に変更します。
      3. Value (値)」列に値を入力します。
      例では、選択行は以下のようになります。
       Cmd Con ( Column name                         Op  Value                       )
           <-> - <---+----1----+----2----+----3----> <-> <---+----1----+----2----+-- -
       *** ****  Top of data  ****
       ⋮
           AND   LASTNAME                            =   SMITH                        
           OR    LASTNAME                            =   JONES                        
    • 以下のように、IN 演算子を使用する。
      1. LASTNAME の行で、演算子 (=) を IN に変更します。IN 演算子を使用すると、選択する値のリストを指定できます。
      2. 「Value (値)」列に、選択する値を入力します。英数字の列の場合、値のリストを指定するときは、各値を引用符で囲み、コンマで区切る必要があります
      例では、選択行は以下のようになります。
       Cmd Con ( Column name                         Op  Value                       )
           <-> - <---+----1----+----2----+----3----> <-> <---+----1----+----2----+-- -
       *** ****  Top of data  ****
       ⋮
           AND   LASTNAME                            IN  'SMITH','JONES'              
  5. 選択したデータを表示するには、Exit function key (F3) を 2 回押します。SMITH または JONES の行選択基準を指定するためにどちらの方法を使用しても、同じ結果が得られます。
      Process   Options   Utilities   Help
    ────────────────────────────────────────────────────────────────────────────────
    FM/Db2 (DFG2)                     Table Edit                    Template saved
    TABLE FMNUSER.EMP                                                  Format TABL
           EMPNO  FIRSTNME     MIDINIT LASTNAME        WORKDEPT PHONENO HIREDATE
           #1     #2           #3      #4              #5       #6      #7
           CH(6)  VARCHAR(12)  CH(1)   VARCHAR(15)     CH(3)    CH(4)   DATE
           PU--+> <---+----1-> -       <---+----1----> <-NF     <-->    <---+---->
    000000 ****  Top of data  ****
    000001 000210 WILLIAM<     T       JONES<          D11      0942    11.04.1979
    000002 000250 DANIEL<      S       SMITH<          D21      0961    30.10.1969
    000003 000300 PHILIP<      X       SMITH<          E11      2095    19.06.1972
    000004 ****  End of data  ****
    ⋮

引き続きこの同じ例を使用して、姓が SMITH または JONES で、部門 D21 にいる従業員を選択する場合は、行選択基準を再度変更する必要があります。

今回は、あいまいさを避けるために、括弧を使用して、結果の WHERE 文節の評価の順序を定義することが必要になることがあります。「Row Selection Criteria (行選択基準)」パネルで、( および ) 列を使用して、式のグループを括弧で囲むことができます。

例では、選択行はこの時点で以下のようになります。
 Cmd Con ( Column name                         Op  Value                       )
     <-> - <---+----1----+----2----+----3----> <-> <---+----1----+----2----+-- -
 *** ****  Top of data  ****
 ⋮
     AND ( LASTNAME                            =   SMITH                        
     OR    LASTNAME                            =   JONES                       )
     AND   WORKDEPT                            =   D21                          
選択されたデータは、以下のように表示されます。
  Process   Options   Utilities   Help
────────────────────────────────────────────────────────────────────────────────
FM/Db2 (DFG2)                     Table Edit                    Template saved
TABLE FMNUSER.EMP                                                  Format TABL
       EMPNO  FIRSTNME     MIDINIT LASTNAME        WORKDEPT PHONENO HIREDATE
       #1     #2           #3      #4              #5       #6      #7
       CH(6)  VARCHAR(12)  CH(1)   VARCHAR(15)     CH(3)    CH(4)   DATE
       PU--+> <---+----1-> -       <---+----1----> <-NF     <-->    <---+---->
000000 ****  Top of data  ****
000002 000250 DANIEL<      S       SMITH<          D21      0961    30.10.1969
000004 ****  End of data  ****
⋮