Convertir fonction InStr() de ACESS vers SQL
Fermé
zebeachboy
-
12 avril 2008 à 22:16
phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 - 12 avril 2008 à 22:45
phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 - 12 avril 2008 à 22:45
A voir également:
- Convertir fonction InStr() de ACESS vers SQL
- Fonction si et - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Windows 7 vers windows 10 - Guide
- Convertir cda en mp3 ✓ - Forum Logiciels
- Transferer photo android vers pc - Guide
1 réponse
phil_232
Messages postés
286
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
12 juin 2008
33
12 avril 2008 à 22:45
12 avril 2008 à 22:45
Dans SQL Server tu utiliseras soit CHARINDEX (https://docs.microsoft.com/en-us/sql/t-sql/functions/charindex-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15 soit PATINDEX (http://msdn2.microsoft.com/en-us/library/ms188395.aspx): https://www.databasejournal.com/features/mssql/article.php/3071531/Using-SQL-Servers-CHARINDEX-and-PATINDEX.htm
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").
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").