こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

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

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

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

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

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

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

投稿日時 - 2013-12-17 02:42:25

QNo.8389475

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

ANo.1

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

投稿日時 - 2013-12-17 13:35:04

補足

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

投稿日時 - 2013-12-17 21:12:30

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-