Sql server 使用sp_executesql进行MSSQL全文搜索

Sql server 使用sp_executesql进行MSSQL全文搜索,sql-server,entity-framework-6,full-text-search,Sql Server,Entity Framework 6,Full Text Search,我正在使用EntityFrameworkV6.3并调用DbSet.SqlQuery来查询一个国家的表。已为表和列启用全文索引。发出的SQL如下所示: exec sp_executesql N'SELECT * FROM tblBaseGeos WHERE Contains(Name, @p0)',N'@p0 nvarchar(13)',@p0=N'United States' 这给了我一个错误:全文搜索条件“美国”中“州”附近的语法错误。 我读过如何正常地做这件事: SELECT * FROM

我正在使用EntityFrameworkV6.3并调用
DbSet.SqlQuery
来查询一个国家的表。已为表和列启用全文索引。发出的SQL如下所示:

exec sp_executesql N'SELECT * FROM tblBaseGeos WHERE Contains(Name, @p0)',N'@p0 nvarchar(13)',@p0=N'United States'
这给了我一个错误:
全文搜索条件“美国”中“州”附近的语法错误。

我读过如何正常地做这件事:

SELECT * FROM tblBaseGeos WHERE Contains(Name, '"United States"')

这是可行的,但是我在使用sp_executesql的双引号时遇到了问题。如何修复查询?

用双引号括住搜索短语,并在nvarchar参数的长度上添加两个符号。下面的代码可以正常工作

exec sp_executesql 
 N'SELECT * FROM tblBaseGeos WHERE Contains(Name, @p0)',N'@p0 nvarchar(15)',
  @p0=N'"United States"'

谢谢,我就是这么做的,但失败了。看着你的,我意识到我在测试时忘了增加nvarchar长度。。。