SQL2005 で正常に実行されたクエリがありますが、データベースを SQL2008 に移動すると、タイトルからエラーが発生します。
問題のコードは、空のパラメーターを指定した CONTAINS、CONTAINSTABLE、または FREETEXT の呼び出しです。ただし、そのような値がある場合にのみ呼び出しまたは参加しようとしています
where (@search_term = '' or (FREETEXT(lst.search_text, @search_term)))
また
left join containstable (listing_search_text, search_text, @search_term) ftb on l.listing_id = ftb.[key]
and len(@search_term) > 0
ただし、これが SQL2008 で機能するための回避策が見つかりません。何か案は?
動的 SQL を実行できること、または 2 つの異なるケース (FT 結合を使用して選択する、FT 結合を使用せずに選択する) の if ステートメントを使用できることを知っています。これを行う必要のないより良い回避策はありますか?