0

私は FTS に取り組んでいますが、問題で立ち往生しています。SQL Server 2008 で CONTAINS 内の文字列をどのように連結しますか?

FTSのContains関数を使用しようとしていますが、検索文字列を連結文字列として渡すか、スカラー関数から文字列を返す必要があります。ただし、FTS では両方のオプションを使用できません。

Contains" " 句内で検索文字列を連結することはできません

select top 10 * from dbo.staging_table with (nolock)
where contains(text,N'"pakistan"'+'" Lahore"')

上位 10 を選択 * dbo.staging_table から (nolock) where contains(text,(select from dbo.getcityList())) を使用

2 番目のオプションは、文字列引数を想定しているため、再び使用できません。ビューでこのクエリを使用しているため、変数を宣言できません:(この問題の解決を手伝ってください

4

1 に答える 1

0

ビューの代わりにテーブル値関数を使用できます。

CREATE FUNCTION dbo.fTestFTS (@str NVARCHAR(4000))
RETURNS TABLE
RETURN (
    select top 10 *
    from dbo.staging_table
    where contains(*, @str)
)

SELECT * FROM dbo.fTestFTS(N'"pakistan"' + ' &' + '" Lahore"')

検索文字列のアンパサンドに注意してください。

于 2013-08-21T10:19:17.563 に答える