コードロード

エラー討伐

【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_id10が含まれるレコード(id: 1)だけを取得したいのに、 下記の書き方だとcreated_at10を含む箇所(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。