SQL COMME avec aucun des caractères génériques la même chose que '='?
Je sais que c'est une jolie question de base, et je pense, je connais la réponse...mais je tiens à confirmer.
Sont ces requêtes réellement l'équivalent?
SELECT * FROM FOO WHERE BAR LIKE 'X'
SELECT * FROM FOO WHERE BAR ='X'
Peut-être il ya une surcharge de performance en utilisant comme avec pas de cartes sauvages?
J'ai une application qui éventuellement utilise COMME & cartes sauvages. Le PS, ne le fait actuellement l'aime et ajoute les cartes sauvages -- je pense juste la mise à jour de la requête à utiliser comme mais ont l'app ajouter les sauvages de cartes que nécessaire.
Vous devez vous connecter pour publier un commentaire.
Comme @ocdecio dit, si l'optimiseur est assez intelligent il devrait y avoir aucune différence, mais si vous voulez vous assurer que sur ce qui se passe derrière les coulisses, vous devriez comparer les deux de la requête de plans d'exécution.
Réponse originale à cette question par Matt Whitfield de ici
Il y a une différence entre
=
etLIKE
. Lorsque vous effectuez des comparaisons de chaînes en utilisantLIKE
, tous les caractères de la chaîne de modèle sont significatives. Cela comprend les plus grandes ou les espaces.Donc si vous avez une colonne qui est
char
ounchar
et pasnvarchar
ouvarchar
, il y aura des résultats différents en raison des espaces.Petit exemple pour reproduire ce comportement:
Tout bon optimiseur permettrait de réduire la première expression à la seconde.