全文搜索或纯SQL查询

时间:2013-01-02 10:45:29

标签: sql-server sql-server-2005 full-text-search

如果我将使用FTS或纯SQL查询(LIKE),我只会感到困惑。我试图在一张桌子上使用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的所有行。

2 个答案:

答案 0 :(得分: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'+'%' 

答案 1 :(得分:0)

我已经找到了解决方案,就像@aks建议我已经尝试过但我已经加入了双引号,以便它能正确读取“*”符号,

这是启发我的链接。 http://msdn.microsoft.com/en-us/library/ms187787.aspx

SELECT description,ponumber,prnumber,invoicenumber,createdby,updatedby 来自MSTR_FILE WHERE CONTAINS(createdby,'“user *”');