MySQL - Clause LIKE

Nous avons vu le SQL SELECTcommande pour récupérer les données de la table MySQL. Nous pouvons également utiliser une clause conditionnelle appeléeWHERE clause pour sélectionner les enregistrements requis.

Une clause WHERE avec le signe 'égal à' (=) fonctionne bien là où nous voulons faire une correspondance exacte. Comme si "tutorial_author = 'Sanjay'". Mais il peut y avoir une exigence où nous voulons filtrer tous les résultats où le nom de tutorial_author doit contenir "jay". Cela peut être géré en utilisantSQL LIKE Clause avec la clause WHERE.

Si la clause SQL LIKE est utilisée avec le caractère%, elle fonctionnera comme un méta-caractère (*) comme sous UNIX, tout en listant tous les fichiers ou répertoires à l'invite de commande. Sans le caractère%, la clause LIKE est très identique à laequal to signer avec la clause WHERE.

Syntaxe

Le bloc de code suivant a une syntaxe SQL générique de la commande SELECT avec la clause LIKE pour récupérer des données à partir d'une table MySQL.

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • Vous pouvez spécifier n'importe quelle condition à l'aide de la clause WHERE.

  • Vous pouvez utiliser la clause LIKE avec la clause WHERE.

  • Vous pouvez utiliser la clause LIKE à la place de equals to signe.

  • Lorsque LIKE est utilisé avec le signe%, cela fonctionnera comme une recherche de méta-caractères.

  • Vous pouvez spécifier plusieurs conditions en utilisant AND ou OR les opérateurs.

  • Une clause WHERE ... LIKE peut être utilisée avec la commande SQL DELETE ou UPDATE également pour spécifier une condition.

Utilisation de la clause LIKE à l'invite de commandes

Cela utilisera la commande SQL SELECT avec la clause WHERE ... LIKE pour récupérer les données sélectionnées de la table MySQL - tutorials_tbl.

Exemple

L'exemple suivant renvoie tous les enregistrements du tutorials_tbl table dont le nom de l'auteur se termine par jay -

[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
   -> WHERE tutorial_author LIKE '%jay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|      3      |  JAVA Tutorial |     Sanjay      |    2007-05-21   |   
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql>

Utilisation de la clause LIKE dans un script PHP

Vous pouvez utiliser une syntaxe similaire de la clause WHERE ... LIKE dans la fonction PHP - mysql_query(). Cette fonction est utilisée pour exécuter la commande SQL et plus tard une autre fonction PHP -mysql_fetch_array() peut être utilisée pour récupérer toutes les données sélectionnées, si la clause WHERE ... LIKE est utilisée avec la commande SELECT.

Mais si la clause WHERE ... LIKE est utilisée avec la commande DELETE ou UPDATE, aucun autre appel de fonction PHP n'est requis.

Exemple

Essayez l'exemple suivant pour renvoyer tous les enregistrements du tutorials_tbl table dont le nom de l'auteur contient jay -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT tutorial_id, tutorial_title, 
      tutorial_author, submission_date
      FROM tutorials_tbl
      WHERE tutorial_author LIKE "%jay%"';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>