我正在编写一个使用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的限制?
感谢。
答案 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 由字组成。一个词被定义为
是一串没有空格或标点符号的字符。
您可以查看CONTAINS和CONTAINSTABLE上的MSDN文档以获取更多信息。