MariaDB:like句でカラムの値が固定値に部分一致するレコードを検索するSQL

like句でカラムの値が固定値に部分一致するレコードを検索するSQL

例えば「商品テーブルから商品名に「あ」という文字を含むレコードを検索する」といったSQLはよくありますが、逆に商品名がある文字列に部分一致するものを検索するSQLというのを書きたかったので調べてみました。

まず、「商品テーブルから商品名に「あ」という文字を含むレコードを検索する」というSQLですが、

select * from `商品テーブル` where `商品名` like '%あ%';

という風に記述することができます。

前方一致だったら

select * from `商品テーブル` where `商品名` like 'あ%';

後方一致だったら

select * from `商品テーブル` where `商品名` like '%あ';

となります。

上記を踏まえて、今回の逆バージョンを見てみましょう。
以下のようになります。

select * from `商品テーブル` where 'スパイスカレーうどん' like concat('%',`商品名`,'%')

この場合、商品名カラムが「スパイス」や「カレー」、「うどん」、「カレーうどん」になっているレコードを検索できることになります。
「concat」関数を用いることでlikeの後ろにカラムをもってくることができるところがポイントです。