2011-02-08 17 views
1

私たちがしようとしているのは、「Any Word」タイプのマッチのテキスト検索を作成することです。表は、このような例のセットアップです:"Any Word"検索の作成方法は?

ID | Keyword 
------------- 
1 | alpha, beta, charlie 
2 | bravo, delta, echo 
3 | alpha, delta, foxtrot 

我々はこれまでに試みられてきたクエリは、このようなものです:

SELECT keyword FROM KeywordTest 
     WHERE keyword 
IN (select Value FRom split('alpha, beta, charlie',',')) 

我々が起こるだろうと思った私たちは戻って二つの結果を得るだろうということです、 1つはID 1、もう1つはID 3です。しかし、それは私たちがID 1を取得しているということではありません。

私は間違っているのですが、どのようにこのクエリを微調整して 'Any Anyordsこれらはパラメータとして渡されます。

ありがとうございます!

答えて

3

問題はどこにありますか?キーワードではなく、キーワードでは選択肢がLIKEです。 INNER JOINで試すことができます:

SELECT keyword 
FROM KeywordTest a inner join 
     split('alpha, beta, charlie',',') b on a.keyword like '%'+Value+'%' 
+0

これはほぼ正確に私たちが探していたものです。私たちのテストデータでは、ヒットした結果、アルファとチャーリーの結果が返されていました。クエリ上の別名を投げることは、私たちの解決のために働いていました。ありがとう! – Chris

1

私は実際には非常に似たような問題に取り組んでいます。

私はあなたが見てみたいと思うのは、SQLのLIKEキーワードです。

検索結果をすべてLIKEクエリに反映させるには、区切り文字で分割する必要があります。 (私もあなたが必要な場合はそれを助けることができます)

また、%はワイルドカードです。検索条件の前と後に%を置くと、その文脈内の文字列が見つかります。

WHEREキーワードLIKE 'alpha'%を配置した場合は、アルファで始まる検索結果のみが検索されます。

関連する問題