sql-server-2008 - 我可以在 CONTAINSTABLE 函数中使用 UDF 作为搜索条件吗

标签 sql-server-2008 full-text-search

我正在编写一个使用 CONTAINSTABLE 函数的查询。对于 CONTAINSTABLE 调用中的第三个参数,我从 UDF 中获取搜索项。如果我将此 UDF 的输出存储在局部变量中,然后将该变量传递给 CONTAINSTABLE 函数,则它可以正常工作:

declare @temp nvarchar(255) = dbo.udf_GenerateTerm()
select *  FROM ContainsTable([TableToSearch], Content, @temp, LANGUAGE 1033)

但是,如果我直接引用 UDF 作为 CONTAINSTABLE 参数,则会出现语法错误:

select * FROM ContainsTable([TableToSearch], Content, dbo.udf_GenerateTerm(), LANGUAGE 1033)

有没有办法解决这个问题,或者这是 SQL Server 的限制?

谢谢。

最佳答案

这是 SQL Server CONTAINSTABLE 操作的限制。 这是 CONTAINSTABLE 的语法。

CONTAINSTABLE ( table , { column_name | ( column_list ) | * } , ' <contains_search_condition> ' 
     [ , LANGUAGE language_term] 
  [ , top_n_by_rank ] 
          ) 

contains_search_condition是我们感兴趣的部分。语法是这样定义的

<contains_search_condition> ::= 
    { <simple_term> 
    | <prefix_term> 
    | <generation_term> 
    | <generic_proximity_term> 
    | <custom_proximity_term> 
    |  <weighted_term> 
    } 
    | { ( <contains_search_condition> ) 
    { { AND | & } | { AND NOT | &! } | { OR | | } } 
     <contains_search_condition> [ ...n ] 
    }

simple_term单词组成。一个单词定义为

Is a string of characters without spaces or punctuation.

您可以查看 CONTAINS 上的 MSDN 文档和 CONTAINSTABLE了解更多信息。

关于sql-server-2008 - 我可以在 CONTAINSTABLE 函数中使用 UDF 作为搜索条件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386631/

相关文章:

objective-c - 优化扫描大文本并匹配单词或短语列表

string - 用于快速全文搜索的数据结构

python - 检查另一个字符串中存在的匹配字符串的有效方法

xml - SQL Server Xml 命名空间查询问题

mysql - 在多个表中排序匹配

sql-server-2008 - SQL Server 2008 - 换行符和全文查询

SQL计数麻烦

sql - 在 SQL 中实现子字符串搜索的最佳方法是什么?

sql-server-2008 - 如何识别 T-SQL 中每个不同成员的多个开始和结束日期范围中的第一个间隔

sql - 在存储过程中分组