テーブルDocument
にいくつかの列があります。 DocumentTitle
。次のようになります。likeの文字列のリストを照会します。
ドキュメント
- ID(UNIQUEIDENTIFIER)
- DocumentTitle(VARCHAR(200))あなたは、文字列を入力して自分のアプリケーションに
「請求書4711」のように検索します。今では、私のアプリケーションは、これらの単語の両方がタイトルにあるすべてのドキュメントを検索します。 タイトルfoo4711.pdf
、invoice_bar.pdf
の文書は見つかりません。 タイトルがinvoce 4711.pdf
またはtest4711invoce.png
の文書が見つかります。
私はこの手順を書いているので、私はsearchstringsのための修正パラメータカウントを設定することはできません。 1つのパラメータが取得されています。 invoice 4711
と私の分割方法は、(%の-signsで、はい)などのすべての項目を含むテーブルを返します
項目
% 4711パーセント
%の送り状%
Soooこれらの値の両方が一致するすべてのドキュメントを取得しようとすると、私は間違った結果を得ます(ただし、それは常に意味があります:D)
情報:fn_split-関数は、最初のパラメータとして検索文字列を取り、2番目のパラメータはスライス符号
select *
from document
WHERE 1 = (
select case
when document.documenttitle like items then 1 else 0 end
from fn_split('invoice 4711', ' ')
where document.documenttitle like items
);
select *
from document
inner join fn_split('invoice 4711', ' ')
on document.DocumentTitle like items
あるこれらのクエリの両方が返さ結果はそれらの単語のいずれかが含まれています - 両方ではありません。 何が問題なのですか?またはクエリが正しく機能するかどうか
最初に、アイテムの適切な接合テーブルを持つデータ構造。 –
こんにちは、あなたが検索しなければならないのは、%4711%の請求書%と%の請求書%4711%ですので、あなたは "スクラムブラー"機能で分割機能を変更する必要があります。 Uはfn_split( '請求書4711'、 '')、fn_split( '請求書4711'、 '')から項目を選択する '%'と同様のものを試してください。b a.items <> b.items for xml path( ' ') – GigiS
@GigiSもし'請求書4711ジョンスミステキサス '? – Serg