InterBase クイック スタート:Part IV - パターン マッチング

提供: InterBase
移動先: 案内検索

InterBase クイック スタート:Part IV - WHERE 句の利用 へ戻る


値の比較の他に、検索条件では、特定のパターンを使用したキャラクタ文字列のテストを行うことができます。 パターンを定義する際にワイルドカードを使用することができます:

  • %(パーセント記号): 0 個以上の文字と一致。
  • _(アンダースコア): 1 文字と一致。

以下の表は、一般的なパターンの例を示しています。 CONTAINING 以外のすべての条件が、大文字小文字を区別します。

WHERE 結果
WHERE last_name LIKE '%q%'

最低 1 つ q の文字を含む姓

WHERE last_name STARTING WITH 'Sm'

文字 Sm から始まる姓

WHERE Last_name CONTAINING 'q'

最低 1 つ q の文字(大文字小文字どちらでもよい)が含まれている姓

WHERE last_name BETWEEN 'M' AND 'T'

アルファベット順で M から S の間(そしてそれ自身も含む)文字で始まる姓

Image 025.jpg LIKE を使用する

  1. LIKE は大文字小文字を区別し、ワイルドカードが使用できます。 次の文を入力して、姓が an で終わる社員全員を検索します。
    SELECT last_name,
           first_name,
           emp_no
    FROM   Employee
    WHERE  last_name LIKE '%an'
    

    結果、次の図のようになっていると思います。

    TutorialWhere5.png
  2. ここで、次の SELECT 文を入力して、姓が次のパターンと一致する姓を検索します:
    • M の文字で始まる
    • その後、2 文字続く
    • そして D の文字
    • その後、文字が続いてもなくても構わない
    SELECT last_name,
           first_name,
           emp_no
    FROM   Employee
    WHERE  last_name LIKE 'M__D%'
    

    結果、次の図のようになっていると思います。

    TutorialWhere6.png
  3. % ワイルドカードは、0 個以上の文字と一致します。 次のクエリは、姓が BurbankBenderBrown などである行を返します。
    SELECT last_name,
           first_name,
           emp_no
    FROM   Employee
    WHERE  last_name LIKE 'B%r%'
    

    結果、次の図のようになっていると思います。

    TutorialWhere7.png

Image 025.jpg STARTING WITH を使用する

STARTING WITH 演算子は、特定の文字または文字列で始まる値かどうかをテストします。 STARTING WITH は、大文字小文字を区別せず、ワイルドカード文字もサポートしません。

  1. 次の文を使用して、Le から始まる姓の、2 人の社員を抽出してみましょう:
    SELECT last_name,
           first_name
    FROM   Employee
    WHERE  last_name starting WITH 'Le'
    

    結果、次の図のようになっていると思います。

    TutorialWhere8.png
  2. STARTING WITH 演算子の否定は、論理演算子 NOT をその前につけます。
    SELECT dept_no,
           department,
           location
    FROM   Department
    WHERE  dept_no NOT starting WITH '1'
    

    結果、次の図のようになっていると思います。

    TutorialWhere9.png

Image 025.jpg CONTAINING を使用する

CONTAINING 演算子は、特定の文字または文字列を含む結果を検索します。 CONTAINING は、大文字小文字を区別せず、ワイルドカードもサポートしません。

  1. 次の文を入力して、姓の中に g または G の文字がある社員を検索します。
    SELECT last_name,
           first_name
    FROM   Employee
    WHERE  last_name containing 'G'
    

    結果、次の図のようになっていると思います。

    TutorialWhere10.png
  2. CONTAINING 演算子が大文字小文字を区別しないことを確認するには、前のクエリを変更して、条件で小文字の g を指定するようにします。
    SELECT last_name,
           first_name
    FROM   Employee
    WHERE  last_name containing 'g'
    

    両方とも同じ結果になることが確認できます。

次は: