我正在研究FTS并且遇到了一个问题。关于。 How do you concatenate strings inside of a CONTAINS in SQL Server 2008?
我试图使用FTS的Contains功能 我需要将搜索字符串作为连接字符串或从标量函数返回字符串。但这两个选项在FTS中都不可用。
它不允许在“Contains
”条款
select top 10 * from dbo.staging_table with (nolock)
where contains(text,N'"pakistan"'+'" Lahore"')
使用(nolock)从dbo.staging_table中选择前10 * where contains(text,(从dbo.getcityList()中选择))
第二个选项再次不可用,因为它需要一个字符串参数。 我在视图中使用此查询,所以我不能声明任何变量:( 请帮我解决这个问题
答案 0 :(得分:0)
您可以使用表值函数而不是视图。
CREATE FUNCTION dbo.fTestFTS (@str NVARCHAR(4000))
RETURNS TABLE
RETURN (
select top 10 *
from dbo.staging_table
where contains(*, @str)
)
SELECT * FROM dbo.fTestFTS(N'"pakistan"' + ' &' + '" Lahore"')
请注意搜索字符串中的&符号。