2009-04-22 5 views
0

私はフルテキストカタログのセットアップを持っています。それには、ユニークなキー数が117あり、19項目あります。テーブルには19行しかありません。私のContainsTableクエリが機能しません - 助けてください:

テーブルにはClientGuidというNVARCHAR(50)フィールドがあります。最後に奇妙なテキストのguidです。例えば

..

  1. 8b6ef4a504dd1a57f079180e7f6eb4a0( - )
  2. 8b6ef4a504dd1a57f079180e7f6eb4a0(OK)

(といいえ、私はそのテキストフィールドのデータを定義されていなかった - 私たちはからそれを調達していますサードパーティのAPI

これは私のSQLとクエリです。私はクエリを実行すると、ゼロ結果を返します:(

ALTER FUNCTION [dbo].[Foo_HiJonSkeet] 
( 
    @ClientGuid NVARCHAR(50) 
) 
RETURNS TABLE 
AS 
RETURN 
(
    SELECT KEY_TBL.[Key] as LogEntryId, 
     KEY_TBL.RANK as Relevance 
    FROM CONTAINSTABLE(LogEntries, ClientGuid, @ClientGuid) AS KEY_TBL 
) 


SELECT * FROM Foo_HiJonSkeet('8b') 

二重引用符と元の検索語の後にアスタリスクを追加

SELECT * FROM Foo_HiJonSkeet('"8b*"') 

: サーバーは、SQL Server 2008

答えて

0

あなたは次のような構成を試すことができます。それは動作するはずです。

しかし、すべての検索が上記の例に似ている場合は、全文検索を使用する代わりにLIKEというステートメントを使用することをお勧めします。

+0

興味のある方は、なぜCONTAINSではなくLIKEですか? –

+0

@ Pure.Krome、いくつかの言葉では、 'LIKE( '8b *')式は定義されているならば、この列のインデックスを使うことができます。 'LIKE'述語が文字パターンだけに作用するにもかかわらず、あなたの例はそのような場合です。また、「LIKE」もここでは直感的です。 – Alex

関連する問題