• 締切済み

SQLSERVERのカラム内 文字間指定検索

SQLSERVER2008にてフルテキストインデックス検索であるカラムを検索しています。 例 naiyouというカラムに関してレコードとして、 「始まり 私は人間です。 第二章 私はさるです。 終わり」 という文章が1レコード入っているとします。 この場合、仮にcontains (naiyou,'人間')と検索するともちろんこのレコードがHITします。 今回やりたいのは、 ・naiyou内の第二章以降の文章で「人間」と検索した場合、ノーヒットとなること ・naiyou内の始まり~第二章までの間で「人間」という検索をして、HITすること という、カラム内のある文字間でのCONTAINS 検索というのは可能でしょうか、そしてそのSQLはどのようにかけばいいのでしょうか?というご質問です。 NEARとかでできるのかと思い、いろいろやってみましたがうまくいきませんでした。 なぜこのようにしたいかというと、いま処理している文章の冒頭がすべて同じ文面になっており、文面内の単語で検索されてしまうと全件HITしてしまうからです。 本来なら、その冒頭を除いた文章で単語をHITさせたいため、範囲指定を考えました。 ご教授いただければ幸いです。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

WHERE CHARINDEX('人間', naiyou) BETWEEN 0 AND CHARINDEX('第二章', naiyou + '第二章')

doraemon3104
質問者

補足

早速のお返事ありがとうございます。 いま試してみたのですが、全件HITしてしまいました。 人間ていうところを変えてみたり、第二章の所を変えてみたりしましたが結果は同じようです。 BETWEEN 0 AND 第二章という表記は 始めから第二章までの間という認識でよろしいでしょうか? 範囲というよりも、フルテキストインデックスが効いてない感じがしました。 よろしくお願いいたします。

関連するQ&A