Rechercher : dans
Par :

Convertir fonction InStr() de ACESS vers SQL

Dernière réponse le 12 avr 2008 à 22:45:48 zebeachboy, le 12 avr 2008 à 22:16:23 
 Signaler ce message aux modérateurs

Bonjour,
Je cherche à convertir mes requêtes SQL de ACCESS vers SQL SERVEUR, et je bute sur une fonction dont je ne connais pas l'équivalent dans MSSQL, la fonction INSTR().

Dans ACCESS, j'écris : "SELECT * FROM CLIENTS WHERE INSTR(Villes, "saint")>0"
ce qui me retournera toutes les villes qui contiennent le mot "saint" dans le nom.

Je ne sais pas comment le faire maintenant pour SQL SERVEUR car la fonction INSTR() n'est pas valide...

Merci de votre aide si vous savez...
Phil

Configuration: Windows XP
Internet Explorer 7.0
SQL serveur 7.0

Meilleures réponses pour « Convertir fonction InStr() de ACESS vers SQL » dans :
Comment convertir un clip vidéo en .flv et inversement VoirIntroduction Voici une astuce pour vous permettre de simplement convertir un clip vidéo de (presque) n'importe quel format vers le format .flv. Cette astuce vous sera utile pour traiter de la vidéo à postériori ou pour publier votre vidéo sur...
Convertir un fichier WAV, AVI, MPEG vers le format 3GP / 3GPP VoirPour convertir un fichier WAV, AVI, MPEG ou MP3 au format 3GP, il suffit d'utiliser l'un des logiciels suivants : Mobile 3GP Converter MediaCoder Super Format Factory On peut aussi utiliser un convertisseur en ligne tel que : Media...

1

 phil_232, le 12 avr 2008 à 22:45:48

Dans SQL Server tu utiliseras soit CHARINDEX (http://msdn2.microsoft.com/en-us/library/ms186323.aspx) soit PATINDEX (http://msdn2.microsoft.com/en-us/library/ms188395.aspx): http://www.databasejournal.com/features/mssql/article.php/30­71531

Les deux renvoient la première position où le texte recherché a été trouvé.

Mais ATTENTION : "SELECT * FROM CLIENTS WHERE INSTR(Villes, "saint")>0" doit parcourir TOUTES les lignes de la table pour trouver le résultat (SQL Server est obligé d'analyser chaque nom de ville). Aucun moyen d'utiliser un index et donc cette requête sera très, très lente.

Tu pourras gagner pas mal de performance en faisant

"SELECT * FROM CLIENTS WHERE Villes LIKE 'Saint%'

Puisque comme ça tu dis à SQL Server qu'il doit commencer la recherche chaque fois au début de la ligne tu gagneras énormément en vitesse car sous ces conditions un index peut être utilisé (il est seulement obligé d'analyser les villes qui commencent par "Saint").

Répondre à phil_232
Collection CommentÇaMarche.net