【SQL】LIKE検索は%を3つ以上含めてパターン検索できる
リクストされたパスを保存しているログから対象の商品IDを含むレコードを取得したいとする。
例:ログテーブル
id | path |
---|---|
1 | /item_ids=5,10,24&created_at=2023-04-01 |
2 | /item_ids=22,23,98&created_at=2023-04-12 |
3 | /item_ids=25,36&created_at=2023-04-30 |
4 | /item_ids=50,55,66,78&created_at=2022-10-01 |
5 | /item_ids=19&created_at=2022-07-05 |
困ってたこと
SQLのLIKE検索で、意図しない箇所で検索ヒットしてしまう。
item_id
に10
が含まれるレコード(id: 1)だけを取得したいのに、
下記の書き方だとcreated_at
が10
を含む箇所(id: 1 と id: 4)もヒットしてしまう。
例
SELECT * FROM Log WHERE path LIKE '%10%';
解決策
SELECT * FROM Log WHERE path LIKE '%item\_id=%10%created_at%';
こうすれば、item_id
の中に10
を含むもので、その後にcreate_at
が来るように順番を指定することができる。
ありがとう、ChatGPT。