У меня есть запрос, который нормально работал на 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 или иметь оператор if с двумя разными случаями (выберите с объединением FT, выберите без объединения FT. Есть ли лучший обходной путь, который не требует этого?