J'ai une requête qui fonctionnait bien sous SQL2005 mais qui, en déplaçant la base de données vers SQL2008, me donne l'erreur du titre.
Le code qui pose problème est un appel à CONTAINS, CONTAINSTABLE ou FREETEXT avec un paramètre vide. Cependant, j'essaie d'appeler ou de joindre uniquement lorsqu'il y a une valeur, comme suit
where (@search_term = '' or (FREETEXT(lst.search_text, @search_term)))
o
left join containstable (listing_search_text, search_text, @search_term) ftb on l.listing_id = ftb.[key]
and len(@search_term) > 0
Cependant, je ne trouve aucune solution pour que cela fonctionne avec SQL2008. Avez-vous une idée ?
Je sais que je peux faire du SQL dynamique ou avoir une instruction if avec deux cas différents (select avec FT join, select sans FT join). Existe-t-il une meilleure solution de contournement qui ne nécessite pas de faire cela ?