FTS 包含字符串连接

Posted

技术标签:

【中文标题】FTS 包含字符串连接【英文标题】:FTS Contains string concatenate 【发布时间】:2013-08-18 13:12:09 【问题描述】:

我正在研究 FTS,但遇到了一个问题。关于 . How do you concatenate strings inside of a CONTAINS in SQL Server 2008?

我正在尝试使用包含 FTS 的功能 我需要将搜索字符串作为连接字符串传递或从标量函数返回字符串。但这两个选项在 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,(select from dbo.getcityList()))

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

【问题讨论】:

【参考方案1】:

您可以使用表值函数代替视图。

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

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

【讨论】:

以上是关于FTS 包含字符串连接的主要内容,如果未能解决你的问题,请参考以下文章

连接表:一个是普通表,另一个是 FTS 虚拟表

Sqlite FTS5:使用 Trigram Tokenizer 进行子字符串匹配

SQLite:一个单词中的FTS匹配可以忽略哪个字符

当密码包含特殊字符时写入连接字符串

当密码包含特殊字符时写入连接字符串

当密码包含特殊字符时写入连接字符串