2012-01-11 9 views
0

こんにちは私は、CONTAINS関数に似た関数を探していますが、フィールドをフルテキストインデックスにする必要はありません。基本的に私はABC DEF GHIのようなスペースで区切られたコードを含むフィールドを持っています。私はクエリを実行し、DEFがフィールドにあるかどうかを確認したいと思います。これをどうやってやりますか?同様の機能が含まれています

+0

LIKE '%DEF%'は機能しますが、sloooooooooooooooooooowwwwwwwになることがあります。 「スペースで区切られたコードを含むフィールド」は避けるべきです。 – aehiilrs

+0

@aehiilrs私は知っていますが、残念ながらそれはデータベースがセットアップされた方法であり、変更することはできませんので、私はしなければなりません! :( –

答えて

2

CHARINDEXをご覧ください。検索文字列がリストの先頭または最後にある場合を考慮して、検索対象の列の先頭と末尾に空白を追加しました。

SELECT * 
    FROM YourTable 
    WHERE CHARINDEX(' DEF ', ' ' + YourColumn + ' ') <> 0; 
6

LIKEのように聞こえるかもしれません。のみなしでその値である文の最終的なエッジケース -

SELECT * FROM someTable WHERE someField LIKE '%DEF%' 
+0

列は空白で区切られた値の集まりです。列に 'ABC 12DEF34 GHI'などが含まれていると、結果が正しく表示されません。 –

2
WHERE YourField like '% DEF %' 
OR YourField LIKE '% DEF' 
OR yourField like 'DEF %' 
OR YourField = 'DEF' 

はそれがスペースで囲まれた真ん中にいるのケースをカバー、または末尾に/スタート:クエリは、次のようになりますスペース。あなたが 'ADEFB'の値を持っている場合、意図的に使用/確保されたスペース。あるコードが別のコードの中にあります。

パフォーマンスはあまり良くありません。

関連する問題