概要
- 特定の文字列に一致するデータのみを取得したい
回答
- 取得したい文字列に対して
%
(ワイルドカード)を入れる -
LIKE
句を入れる
SELECT
*
FROM
'テーブル名'
WHERE
'テーブル名.カラム名' LIKE '%hoge%'
- この場合、文字列の前後に
%
を入れているため、部分一致になる -
'%hoge'
や'hoge%'
などにすれば前方、後方部分一致になる
詳細(例)
やりたいことA
- 大阪の倉庫を取得したい
テーブル例
- 倉庫テーブル(db.storage)
id | name | address |
---|---|---|
1 | 大阪中央倉庫 | 大阪府大阪市hoge1-2 |
2 | 大阪北倉庫 | 大阪府吹田市hoge1-2 |
3 | 大阪南創庫 | 大阪府堺市hoge1-2 |
4 | 名古屋中央倉庫 | 愛知県名古屋市hoge1-2 |
5 | 東京中央倉庫 | 東京都千代田区hoge1-2 |
6 | 東京港倉庫 | 東京都港区hoge1-2 |
クエリ
SELECT
*
FROM
db.storage
WHERE
db.name LIKE '%大阪%'
出力結果
id | name | address |
---|---|---|
1 | 大阪中央倉庫 | 大阪府大阪市hoge1-2 |
2 | 大阪北倉庫 | 大阪府吹田市hoge1-2 |
3 | 大阪南創庫 | 大阪府堺市hoge1-2 |
やりたいことB
- 東京在籍のユーザー一覧を出したい
- ※前提として、場所の入力がフリーテキストです
テーブル例
- ユーザーテーブル(db.users)
id | name | location | sex |
---|---|---|---|
1 | A | 東京 | 男性 |
2 | B | 神奈川 | 男性 |
3 | C | Tokyo | 女性 |
4 | D | Tokyo Japan | 女性 |
5 | E | 東京都 | 男性 |
6 | F | 千葉 | 男性 |
7 | G | 千葉県 | 女性 |
8 | H | 東京都港区 | 男性 |
9 | I | saitama | 女性 |
10 | J | 神奈川県 | 女性 |
クエリ
SELECT
COUNT(db.id) AS count
FROM
db.users
WHERE
db.location LIKE '%東京%'
OR
db.location LIKE '%Tokyo%'
出力結果
count |
---|
4 |
やりたいことC
- 東京在籍でかつ、女性のユーザー一覧を出したい
- ※前提として、場所の入力がフリーテキストです
テーブル例
- ↑と同様のユーザーテーブル(db.users)を使います
クエリ
SELECT
*
FROM
db.users
WHERE
(db.location LIKE '%東京%'
OR
db.location LIKE '%Tokyo%')
AND
db.sex = '女性'
出力結果
id | name | location | sex |
---|---|---|---|
3 | C | Tokyo | 女性 |
4 | D | Tokyo Japan | 女性 |