2012-02-21 60 views
2

我在寫一個使用CONTAINSTABLE函數的查詢。對於CONTAINSTABLE調用中的第三個參數,我從UDF獲取搜索項。如果我這個UDF的輸出存儲在一個局部變量,然後傳遞變量到CONTAINSTABLE功能,它工作正常:我可以使用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的限制嗎?

謝謝。

回答

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由一個的。一個字被定義爲

Is a string of characters without spaces or punctuation.

您可以查看在CONTAINSCONTAINSTABLE MSDN文檔獲取更多信息。

相關問題