2012-02-21 10 views
2

CONTAINSTABLE関数を使用するクエリを作成しています。 CONTAINSTABLE呼び出しの3番目のパラメーターについては、UDFから検索語を取得します。私はローカル変数で、このUDFの出力を格納し、CONTAINSTABLE関数に変数を渡すと、それが正常に動作します:CONTAINSTABLE関数の検索条件にUDFを使用できますか?

declare @temp nvarchar(255) = dbo.udf_GenerateTerm() 
select * FROM ContainsTable([TableToSearch], Content, @temp, LANGUAGE 1033) 

しかし、私は直接CONTAINSTABLE引数としてUDFを参照する場合、私は構文を取得エラー:

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単語で構成されて定義されます。言葉はあなたがより多くの情報のためCONTAINSCONTAINSTABLE上のMSDNのドキュメントを確認することができます

Is a string of characters without spaces or punctuation.

として定義されます。