【问题标题】:Using SQL CONTAINS with multiple words inside a variable在变量中使用带有多个单词的 SQL CONTAINS
【发布时间】:2020-01-06 09:55:29
【问题描述】:

我正在尝试将 SQL CONTAINS 函数与变量一起使用。通常,我可以通过以下方式使用 CONTAINS:

WHERE CONTAINS(tablename, '"some text to search for"')

但是,我不知道如何在该函数中插入一个变量,以允许我使用多个单词进行搜索。

WHERE CONTAINS(tablename, @Keyword)

只允许搜索一个词,如果传递多个词将抛出异常。

消息 7630,级别 15,状态 3,过程 dbo.bp_SearchCategoryByKeyword, 第 11 行 [Batch Start Line 0] 全文中“this”附近的语法错误 搜索条件

【问题讨论】:

  • "如果传入多个单词会抛出异常" 异常是什么?
  • stackoverflow.com/questions/16507239/…。您必须拆分输入并执行 JOIN 操作。
  • Msg 7630,Level 15,State 3,Procedure dbo.bp_SearchCategoryByKeyword,Line 11 [Batch Start Line 0] 全文搜索条件“Check this”中“this”附近的语法错误。跨度>
  • 什么版本的 SQL Server?
  • 那里接受的答案使用WHILE, @KarelFrajták。即使在(完全不受支持的)SQL Server 2008 中,也有比拆分字符串更好的选项

标签: sql sql-server freetext


【解决方案1】:

我刚刚尝试过,它按预期工作:

DECLARE @SearchTerms varchar(8000) = 'file AND read';

SELECT MessageID, Description 
FROM dbo.Messages
WHERE CONTAINS(Description, @SearchTerms)
ORDER BY MessageID;

这也有效:

DECLARE @SearchTerms varchar(8000) = '"file" AND "read"';

SELECT MessageID,Description 
FROM dbo.Messages
WHERE CONTAINS(Description, @SearchTerms)
ORDER BY MessageID;

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 2011-10-19
    • 1970-01-01
    • 2021-12-17
    • 2014-07-18
    • 2019-10-24
    • 2012-03-18
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多