使用SQL Server 2008全文搜索搜索数据时出现问题。
当我搜索没有空格的数据时,它可以正常工作,但是当我输入带有空格的数据时,它会出错。
如果我搜索'amit'
它会有效,但如果数据为'amit is working'
则会出错。
我正在使用带有SQL Server 2008的ASP.NET MVC 4.0。
谢谢阿米特。
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
答案 0 :(得分:20)
我认为阿米特的回答可能是阿米特独有的。对于其他人......
用双引号包装值:
SELECT ... WHERE Contains(tablename.columnname, '"amit is working"')
是
的答案使用SQL Server 2008全文搜索搜索数据时出现问题。
当我搜索没有空格的数据时,它可以工作 但是当我输入带有空格的数据时,它会出错。
就像我搜索'amit'一样有效但是如果数据'amit is working'则会给出 错误。
答案 1 :(得分: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
希望这会奏效...... http://searchsqlserver.techtarget.com/tip/Using-full-text-search-for-symbols-in-SQL-Server