パンプキンスパイスラテ

IT系のことが多めの日記帳です

文字列の出現回数を調べる

SQLserver

検索結果を表示する際に、キーワードが文字列の中にいくつ含まれているか表示させたいなぁと思って、試行錯誤してみた。
はじめ、count()をサブクエリで使えるのかなと思って試してみたら、ダメでした。
次に patindex をうまく使えばできるんじゃないかと思ったけど、これもダメ。
結局あきらめて、本屋で立ち読みしてたら解決!

select
(
select (len('hoge!hoge!hoge') - len(replace('hoge!hoge!hoge', 'hoge', ''))) / len('hoge')
) as CNT
from TABLE
実際は「'hoge!hoge!hoge'」がカラム名にあたるよ。

※後日、自分で見たらわかりづらかったので修正

select
  (
  select (len(カラム名) - len(replace(カラム名, 'キーワード', ''))) / len('キーワード')
  ) as CNT
from テーブル名

(len(文字列) - len(文字列からキーワードを削除した値)) / len(キーワード)

これで、キーワードがいくつ含まれているかが求められる。パズルみた〜い♪

SQL Hacks ―データベースを自由自在に操るテクニック

SQL Hacks ―データベースを自由自在に操るテクニック

これ給料入ったら買おう。

間違えた

SQLクックブック ―データベースエキスパートのための実践レシピ集

SQLクックブック ―データベースエキスパートのための実践レシピ集

参考にしたのはこっちだった。