PostgreSQLのLIKEを試す

今日もSQLZOOでSQLを学んだ。 sqlzoo.net

昨日のブログでBETWEENを試したが、以下のようにも書ける。

SELECT
    idl.id AS id,
    idl.name AS name,
    COUNT(idl.id) AS count
FROM
    idol idl
    INNER JOIN idol_unit idlunt
    ON  idl.id = idlunt.idol
    INNER JOIN unit unt
    ON  idlunt.unit = unt.id
GROUP BY
    idl.id
HAVING
  idl.count >= 2
AND
  idl.count <= 3
ORDER BY
    idl.count DESC
;

 id |    name     | count 
----+-------------+-------
 20 | 浅倉 透     |     3
 17 | 黛 冬優子   |     3
 16 | 有栖川 夏葉 |     3
  7 | 白瀬 咲耶   |     2
 15 | 西城 樹里   |     2
(省略)

開発環境

github.com

$ docker exec -it faaaar-db bash

root@{CONTAINER_ID}:/# psql -U postgres

postgres=# \dt
           List of relations
 Schema |   Name    | Type  |  Owner   
--------+-----------+-------+----------
 public | idol      | table | postgres
 public | idol_unit | table | postgres
 public | unit      | table | postgres

LIKE: 基本形

nameが"田"の前に1文字、後に0文字以上のレコードを抽出。

SELECT
    id,
    name
FROM
    idol
WHERE
    name like '_田%'
;

 id |    name     
----+-------------
 13 | 園田 智代子
 25 | 緋田 美琴

LIKE: 基本形2

nameに"美"が1文字入っているレコードを抽出。

SELECT
    id,
    name
FROM
    idol
WHERE
    name like '%美%'
;

 id |    name     
----+-------------
  6 | 田中 摩美々
 25 | 緋田 美琴

マイルドな正規表現な感じ。
一般的な正規表現を使う場合は別の構文があるみたい。宿題。

参考