重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

SQLSERVER2008にてフルテキストインデックス検索であるカラムを検索しています。

naiyouというカラムに関してレコードとして、

「始まり
私は人間です。
第二章
私はさるです。
終わり」

という文章が1レコード入っているとします。

この場合、仮にcontains (naiyou,'人間')と検索するともちろんこのレコードがHITします。

今回やりたいのは、
・naiyou内の第二章以降の文章で「人間」と検索した場合、ノーヒットとなること
・naiyou内の始まり~第二章までの間で「人間」という検索をして、HITすること
という、カラム内のある文字間でのCONTAINS 検索というのは可能でしょうか、そしてそのSQLはどのようにかけばいいのでしょうか?というご質問です。
NEARとかでできるのかと思い、いろいろやってみましたがうまくいきませんでした。
なぜこのようにしたいかというと、いま処理している文章の冒頭がすべて同じ文面になっており、文面内の単語で検索されてしまうと全件HITしてしまうからです。
本来なら、その冒頭を除いた文章で単語をHITさせたいため、範囲指定を考えました。

ご教授いただければ幸いです。

A 回答 (1件)

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

この回答への補足

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

補足日時:2013/12/17 21:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す