我可以在CONTAINSTABLE函数中使用UDF作为搜索条件

时间:2012-02-21 22:55:25

标签: 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的限制?

感谢。

1 个答案:

答案 0 :(得分:2)

这是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 组成。一个词被定义为

  

是一串没有空格或标点符号的字符。

您可以查看CONTAINSCONTAINSTABLE上的MSDN文档以获取更多信息。