SQLのお勉強 16.like

2020-09-24

こんにちは、0371です。

今回は、SQLのお勉強をしたいと思います。
基本情報技術者試験で出題される範囲を中心に進めます。

お勉強

※ PostgreSQLはインストール済みかつ、パスも通しているという前提で進めていきます。

分からないという方は、以下の記事から始めてください。

dockerを使って、再構築が容易なSQLの練習場を作成する
"https://0371.blog/docker-sql"

前回の記事はこちら

SQLのお勉強 15.サブクエリ
"https://0371.blog/sql-15"

like

likeとは、文字列の部分一致検索のことを言います。

select 列名 from テーブル名 where 列名 like '文字列';

上記の文字列の部分には、%もしくは、_を入れます。

%       // 0文字以上の任意の文字列
_       // 1文字の任意の文字列

_文字列  // 頭の一文字は任意
_文字列_ // 前後の一文字は任意
文字列_  // 末尾の一文字は任意

%文字列  // 頭の0文字以上は任意
%文字列% // 前後の0文字以上は任意 
文字列%  // 末尾の0文字以上は任意

___文字列% // 頭の三文字と、末尾の0文字以上は任意

部分一致には、前方一致、中間一致、後方一致の3種類があります。

試しに、前方一致を行ってみましょう。
商品分類で、「キッチン~」となっているデータを取得します。

select shohin_mei, shohin_bunrui from Shohin where shohin_bunrui like 'キッチン%';

結果は以下の通りです。

 shohin_mei | shohin_bunrui 
------------+---------------
 包丁       | キッチン用品
 圧力鍋     | キッチン用品
 フォーク   | キッチン用品
 おろし金   | キッチン用品
(4 rows)

次に、中間一致をします。
「シャ」が含まれる商品名を探しましょう。

select shohin_mei, shohin_bunrui from Shohin where shohin_mei like '%シャ%';

出てきました。

   shohin_mei   | shohin_bunrui 
----------------+---------------
 Tシャツ        | 衣服
 カッターシャツ | 衣服
(2 rows)

ちなみに、検索文字列の頭を_にするとこうなります。

select shohin_mei, shohin_bunrui from Shohin where shohin_mei like '_シャ%';
 shohin_mei | shohin_bunrui 
------------+---------------
 Tシャツ    | 衣服
(1 row)

次に、後方一致をします。
商品分類で、「~用品」となっているデータを取得します。

select shohin_mei, shohin_bunrui from Shohin where shohin_bunrui like '%用品';

結果は以下の通りです。

  shohin_mei  | shohin_bunrui 
--------------+---------------
 穴あけパンチ | 事務用品
 包丁         | キッチン用品
 圧力鍋       | キッチン用品
 フォーク     | キッチン用品
 おろし金     | キッチン用品
 ボールペン   | 事務用品
(6 rows)

_を使用して、事務用品だけを取得したい場合はこうなります。

select shohin_mei, shohin_bunrui from Shohin where shohin_bunrui like '__用品';

頭に_を2つつけることで実現可能です。

  shohin_mei  | shohin_bunrui 
--------------+---------------
 穴あけパンチ | 事務用品
 ボールペン   | 事務用品
(2 rows)

今日はここまで。

参考書籍

SQL 第2版 ゼロからはじめるデータベース操作
"https://amzn.to/2QYMBJD"

今日の一言

likeが分かったのでSQLはマスターしたも同然!!!!

次回の記事はこちら

SQLのお勉強 17.between
"https://0371.blog/sql-17"