0

FTS を使用するのか、単純な SQL クエリ (LIKE) を使用するのか混乱しています。1 つのテーブルで FTS を使用しようとしましたが、検索値が完全な単語でない場合は正確ではないと思います。これが私のテーブルです。

Description, POnumber,PRNumber,InvoiceNumber,CreatedBy,UpdatedBy
Test user          PO1     PR1       Inv 1         userm     userm
Test2              PO2     PR2       Inv 2         userm     userm
Test3              PO3     PR3       Inv 3         userm     userm

SELECT description,ponumber,prnumber,invoicenumber,createdby,updatedby 
FROM MSTR_FILE
WHERE FREETEXT((createdby,updatedby,ponumber,invoicenumber,prnumber,description),'user')

結果は最初の行ですが、値が「userm」の場合、すべての行が選択されています。私の望む結果は、userm を含むすべての行が表示されることです。

4

2 に答える 2

0

このような OR で like を使用できます...

SELECT description,ponumber,prnumber,invoicenumber,createdby,updatedby 
FROM MSTR_FILE
where description like '%'+'user'+'%' OR
ponumber like '%'+'user'+'%' OR
prnumber like '%'+'user'+'%' OR
invoicenumber like '%'+'user'+'%' OR
createdby like '%'+'user'+'%' OR
updatedby like '%'+'user'+'%' 
于 2013-01-02T10:58:55.330 に答える
0

@aksの提案と同じように解決策をすでに見つけましたが、「*」記号を正しく読み取れるように二重引用符を含めました。

これが私を啓発するリンクです。http://msdn.microsoft.com/en-us/library/ms187787.aspx

SELECT description,ponumber,prnumber,invoicenumber,createdby,updatedby FROM MSTR_FILE WHERE CONTAINS(createdby,'"user*"');

于 2013-01-03T01:08:02.587 に答える