0

如果我将使用 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 的所有行。

4

2 回答 2

0

你可以使用 like with OR like this...

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 回答