目次へ
5.3.3. LIKE 演算子

LIKE 演算子は、テキスト文字列データ型からサブ文字列を検索するものです。テキスト列を検索して、ある文字列と一致する部分があるかどうか確認します。LIKE はそのためにワイルドカードを使用します。ワイルドカードとは、何かと一致する特殊な文字です。LIKE に使用するワイルドカードには次の 2つがあります。

アンダスコア記号(_)
1 文字に相当する。たとえば、'b_t' は 'bat' や 'bit' とは一致するが、'brat' とは一致しない。
パーセント記号(%)
任意数 (0 文字を含む) の連続した文字に相当する。'%p%t' は 'put'、'posit'、'opt' とは一致するが、'spite' とは一致しない。

ここで、LIKE 演算子を用いたデータの参照のサンプルのために、新たにテーブルを定義し、データを入力したものを用意します。

顧客表
顧客コード
CHAR(4)
顧客名
CHAR(20)
001 KUROKIYA
002 ONSIDE
003 FIRST HOUSE

今後、顧客表といえば上表を指すものとします。この顧客表から顧客名が O で始まるものを抽出するには次のように記述します。

-- sample.13-5 --
/* データの参照 */

  SELECT * FROM 顧客表 WHERE 顧客名 LIKE 'O%' ;


/* 実行結果 */

 顧客コード 顧客名
 ────────  ─────
 002       ONSIDE

もし、ワイルドカードである '_' と '%' を含む文字列のデータで、'_' と '%' を検索したい場合にはエスケープ文字を使用します。エスケープ文字は '_' と '%' の直前に配置すると、'_' と '%' はワイルドカードとして解釈されなくなります。エスケープ文字は LIKE 句の後ろに ESCAPE 句を記述して指定します。次の例ではエスケープ文字を'$'とした場合に、'_'で始まる顧客名を検索する文です。顧客表には'_'で始まるデータがないので、何も出力されません。

-- sample.13-6 --
/* データの参照 */

  SELECT * FROM 顧客表 WHERE 顧客名 LIKE '$_%' ESCAPE '$' ;


/* 実行結果 */
(何も出力されず)
5.3.4. IS NULL 演算子

IS NULL 演算子は NULL 値を持つデータを検索するものです。次の例では、顧客表から顧客名列に NULL 値を持つデータを全て抽出するものです。実際には、顧客名列には NULL 値は存在しないので何も出力されません。

-- sample.13-7 --
/* データの参照 */

  SELECT * FROM 顧客表 WHERE 顧客名 IS NULL ;


/* 実行結果 */
(何も出力されず)

(実習課題1)

表に示すテーブル employee の e_name 列から、ファーストネームが「To」で始まるものだけを表示する SQL 文を記述しなさい。表示する列は、e_name 列のみでよい。ただし e_name 列は「ラストネーム ファーストネーム」なるデータが格納されているものとする。

表: employee テーブル
e_num e_name year gender office
101 Ichihara Etsuo 1972 1 20
102 Nishida Toshiko 1978 0 10
103 Nishikino Akiko 1980 0 30
104 Yamaguchi Tomohito 1985 1 10
105 Oda Yuko 1988 0 10
106 Matsushima Nanao 1995 1 20
107 Hirosue Ryotaro 1999 1 30

解答例はこちら

関連記事

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp