|
Sql : LikeL'instruction LIKE liée au langage Sql supporté par dBase (elle n'est pas à confondre avec la fonction like()).
Vous pouvez utiliser l'attribut LIKE pour le filtrage dans une clause WHERE: WHERE <expC> LIKE <pattern expC> [ESCAPE <char>] Dans <pattern expC>, le caractère % (pour cent) représente zéro ou plus caractères de masque, et le _(souligné) représente un simple caractère de masque. Pour inclure l'un ou l'autre caractère particulier comme caractère réel de configuration, spécifiez un caractère ESCAPE et précédez le caractère de masque avec ce caractère escape. Encadrez les chaînes de caractères littérales avec des guillemets simples. Pour spécifier des guillemets simples dans une chaîne de caractères littérale, utilisez des guillemets doubles. Ainsi dans l'instruction suivante va trouver tous les noms comportant la lettre "a"
Si vous souhaitez les noms commençant par "A"
ou les seuls noms finissant par "a"
Une difficulté peut consister à vouloir rechercher dans une chaîne l'un des caractères de masque, % ou _. Cela peut principalement concerner le caractère %. Le code suivant présente comment définir un nouveau caractère d'échappement, le \ dans le cas présent.
Vous pouvez aussi prendre connaissance du formulaire se trouvant ici qui montre une utilisation de LIKE dans un formulaire avec deux ou 3 conditions.
Vous avez dans cette collection un programme de construction de requête SQL : SQLDesigner.wfm
Le moteur Sql de dBase est sensible à la casse. Ainsi si vous indiquez un "A" dans la condition LIKE, seuls les champs comportant un A majuscule seront retenus. Pour cette raison, n'hésiter pas à faire usage de upper() ou lower() pour obtenir les résultats que vous souhaitez. Rappel, les upper() et lower() cités, sont bien des instructions Sql et ne signifient pas que l'on peut mélanger des instructions xBase et Sql. Une ligne de code Sql ne doit comporter que des instructions Sql si vous souhaitez un fonctionnement stable de votre programme. La commande de sélection évalue la condition WHERE. Il faut donc être attentif à ce que tous les champs de la sélection ne soient pas parfois vides. Ainsi si la condition du champ 1 est remplie mais que le champ 2 est vide, la ligne ne sera pas retenue. Il convient de construire sa requête avec attention si vous ne voulez pas trouver un comportement logique que vous estimeriez bizarre. Et n'hésitez pas à la tester avec un jeu d'enregistrements. Les commandes Sql n'étant pas propres à dBASE, vous trouvez facilement des informations sur leur fonctionnement. Ci-dessous quelques liens pour en savoir plus. http://sql.sh/cours/where/like http://blogs.codes-sources.com/christian/archive/2007/12/11/sql-server-la-verite-sur-le-like.aspx http://www.1keydata.com/fr/sql/sql-like.php http://sqlpro.developpez.com/cours/sqlaz/select/ voir point 3.4, notamment pour utilisation escape http://msdn.microsoft.com/fr-fr/library/ms179859.aspx http://dev.mysql.com/doc/refman/5.0/fr/string-comparison-functions.html http://www.cterrier.com/cours/requete_sql/10_sql2.pdf http://www.techonthenet.com/sql/like.php http://forum.hardware.fr/hfr/Programmation/SGBD-SQL/requete-sql-caractere-sujet_58230_1.htm http://cerig.efpg.inpg.fr/tutoriel/bases-de-donnees/chap20.htm
Sources : http://sql.sh/cours/where/like Aide dBase Plus 2.8 FR dUFLP version W Forum dbase.programming Retour à l'accueil Les informations de cette page sont données à titre indicatif et ne se substituent pas à celles contenues dans l'Aide de votre version de dBase qui reste la meilleure documentation.
© M.Abraham. |