我正在编写一个使用 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/