我正在编写一个使用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的一个限制?
谢谢。
发布于 2012-11-12 10:50:21
这是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由word组成。一个词的定义是
是不带空格或标点符号的字符串。
您可以查看CONTAINS和CONTAINSTABLE上的MSDN文档以获取更多信息。
https://stackoverflow.com/questions/9386631
复制相似问题