2010-07-16 103 views
2

假设我有一个带有Firstname,lastname,email列的全文索引的表。在SQL Server 2008上进行全文搜索

有上排在表像 名姓电子邮件 ABC DEF TAN [email protected]

然后我发出以下SQL:

SELECT * FROM Person WHERE CONTAINS(*, 'hong'); 

我有很多行包括上面一行。

如果我发出以下SQL:

SELECT * FROM Person WHERE CONTAINS(*, 'hongtan'); 
SELECT * FROM Person WHERE CONTAINS(*, '[email protected]'); 

我只有一排包括上面一行。

如果我发出以下SQL:

SELECT * FROM Person WHERE CONTAINS(*, 'hongt'); 
SELECT * FROM Person WHERE CONTAINS(*, 'hongta'); 

我什么也没得到。为什么这个案件一无所获?我应该至少有一排。

回答

2

请确保您将单词加引号,并使用通配符“*”。

select * from Person where contains(*, '"hongt*"') 

您以前的搜索没有使用通配符,因为它找到了整个单词; “hong”一定是第一个或最后一个名字,根据索引,“[email protected]”实际上是3个单词。

我刚才了解了全文索引,谢谢。 :)

+0

谢谢,这是工作。这是因为两件事:引号和明星。 – KentZhou 2010-07-16 16:08:24