【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。