使用 sp_executesql 进行 MSSQL 全文搜索

MSSQL full text search with sp_executesql

我正在使用 Entity Framework v6.3 并调用 DbSet.SqlQuery 来查询 table 一个国家。 table 和列启用了全文索引。发出的 SQL 如下:

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

这给了我错误:Syntax error near 'States' in the full-text search condition 'United States'.

我阅读了如何正常操作:

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

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

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

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