FTS包含字符串连接

时间:2013-08-16 07:30:59

标签: sql-server full-text-search concatenation contains

我正在研究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()中选择))

第二个选项再次不可用,因为它需要一个字符串参数。 我在视图中使用此查询,所以我不能声明任何变量:( 请帮我解决这个问题

1 个答案:

答案 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"')

请注意搜索字符串中的&符号。