Ami*_*rma 3 full-text-search sql-server-2008
使用SQL Server 2008使用全文搜索搜索数据时出现问题.
当我搜索没有空格的数据时它可以工作,但是当我输入带有空格的数据时,它会出错.
就像我搜索'amit'它有效,但如果数据是'amit is working'它给出错误.
我使用ASP.NET MVC 4.0与SQL Server 2008.
谢谢阿米特.
Create PROC [usp_Feedback_Search]
@Word nvarchar(500) ,
@CompanyId UNIQUEIDENTIFIER
As
IF ISNULL(@Word,'') = ''
BEGIN
Select
[Id] ,
[Content] ,
[UserId],
[VoteCount] ,
[IsOpen],
[Deleted],
[RowVersion],
[CreatedBy],
[CreatedOn],
[UpdatedOn],
[UpdatedBy],
[CompanyId],
[DisplayId],
[Status]
FROM Feedback
WHERE CompanyId=@CompanyId
END
ELSE
BEGIN
DECLARE @formatedWord varchar(500)='"'+@word+'\+"'
Select
[Id] ,
[Content] ,
[UserId],
[VoteCount],
[IsOpen],
[Deleted],
[RowVersion],
[CreatedBy],
[CreatedOn],
[UpdatedOn],
[UpdatedBy],
[CompanyId],
[DisplayId],
[Status]
FROM Feedback
Where CONTAINS(*,@Word)
and CompanyId=@CompanyId
END
GO
Run Code Online (Sandbox Code Playgroud)
use*_*694 20
我认为阿米特的回答可能是阿米特独有的.对于其他人......
用双引号包装值:
SELECT ... WHERE Contains(tablename.columnname, '"amit is working"')
Run Code Online (Sandbox Code Playgroud)
是答案
使用SQL Server 2008使用全文搜索搜索数据时出现问题.
当我搜索没有空格的数据时它可以工作,但是当我输入带有空格的数据时,它会出错.
就像我搜索'amit'一样有效,但如果数据'amit is working'就会出错.
小智 7
亲爱的,你需要忽略@,空格等外卡字符.
使用下面的更新代码:
Create PROC [usp_Feedback_Search]
@Word nvarchar(500) ,
@CompanyId UNIQUEIDENTIFIER
As
IF ISNULL(@Word,'') = ''
BEGIN
Select
[Id] ,
[Content] ,
[UserId],
[VoteCount] ,
[IsOpen],
[Deleted],
[RowVersion],
[CreatedBy],
[CreatedOn],
[UpdatedOn],
[UpdatedBy],
[CompanyId],
[DisplayId],
[Status]
FROM Feedback
WHERE CompanyId=@CompanyId
END
ELSE
BEGIN
DECLARE @formatedWord varchar(500)='"'+@word+'\+"'
Select
[Id] ,
[Content] ,
[UserId],
[VoteCount] ,
[IsOpen],
[Deleted],
[RowVersion],
[CreatedBy],
[CreatedOn],
[UpdatedOn],
[UpdatedBy],
[CompanyId],
[DisplayId],
[Status]
FROM Feedback
Where CONTAINS(*,@formatedWord)
and CompanyId=@CompanyId
END
GO
Run Code Online (Sandbox Code Playgroud)
希望这会有效... http://searchsqlserver.techtarget.com/tip/Using-full-text-search-for-symbols-in-SQL-Server
| 归档时间: |
|
| 查看次数: |
9609 次 |
| 最近记录: |