Dans SQL Server 2005, j'ai une recherche de produit qui ressemble à:SQL SELECT ... WHERE avec REMPLACER - inquiet qu'il est inefficace
select ProductID, Name, Email
from Product
where Name = @Name
On m'a demandé d'ignorer un couple « caractères spéciaux » dans Product.Name, de sorte qu'une recherche de "Pommes de terre" renvoie "Po-ta-toes" ainsi que "Pommes de terre". Ma première pensée est de faire ceci:
select ProductID, Name, Email
from Product
where REPLACE(Name, '-', '') = @Name
... mais à la réflexion, je me demande si je tue les performances en exécutant une fonction sur chaque résultat candidat. Est-ce que SQL a une magie d'optimisation qui l'aide à faire ce genre de chose rapidement? Pouvez-vous penser à quelque chose de plus facile que je pourrais être en mesure d'essayer avec les exigences que j'ai?
Vous pourriez avoir à mordre la balle. Ignorer certains caractères dans une recherche de produit ajoute une tonne de complexité. Dans l'attente de tous les bons moyens autour de cela !! – Craig
pouvez-vous faire une chaîne remplacer dans le code avant de le passer à la procédure stockée? –