2013-01-02 114 views
0

我只是混淆,如果我將使用FTS或純SQL查詢(LIKE)。我試圖在一張桌子上使用FTS,但是當搜索值不是完整的單詞時,我認爲這是不準確的。這是我的桌子。全文搜索或純SQL查詢

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的所有行。

+0

你嘗試過使用CONTAINS和'user *'嗎? – aks

+0

@aks是我試過但結果是一樣的,只顯示一個結果。 –

回答

0

你可以使用像OR這樣的...

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'+'%' 
+0

我希望我的搜索更高效,我已經閱讀過LIKE不能使用索引。 http://stackoverflow.com/questions/3213998/performance-of-like-query-vs-full-text-search-contains-query。 –

0

我已經找到了解決辦法,就像@aks建議,我都嘗試過,但我已經包含了雙引號,這樣它會正確讀取「*」號,

這是鏈接,啓發我。 http://msdn.microsoft.com/en-us/library/ms187787.aspx

SELECT描述中,採購單號碼,prnumber,invoicenumber,createdby,updatedby FROM MSTR_FILE WHERE CONTAINS(createdby, ' 「用戶*」');