👣

MysqlのFIND_IN_SETを使ってカンマ(,)区切り以外の文字列で検索する

2023/11/27に公開

FIND_IN_SETはデフォルトではカンマ区切りで検索する。
(ここら辺は他記事でも解説されているので、割愛。気になる方は以下記事参考にすると良いかも)
https://gihyo.jp/article/2022/10/mysql-rcn0182
https://qumeru.com/magazine/445

その中でも今回パイプ(|)区切りになっているケースがあったが、軽く調べても出てこなかったためメモ
どうやらFIND_IN_SETの第二引数に入れるカラム名をREPLACEすれば行けるらしい。
普段Laravelを使うので、以下コードはLaravelのwhereRawを使う。

$Model->whereRaw('FIND_IN_SET(?, REPLACE(your_column_name, "|", ","))', [$your_value]);

とりあえず無事検索できるようになります。

Discussion