MySQL - clausola LIKE

Abbiamo visto l'SQL SELECTcomando per recuperare i dati dalla tabella MySQL. Possiamo anche usare una clausola condizionale chiamata comeWHERE clausola per selezionare i record richiesti.

Una clausola WHERE con il segno "uguale a" (=) funziona bene dove vogliamo fare una corrispondenza esatta. Come se "tutorial_author = 'Sanjay'". Ma potrebbe esserci un requisito in cui vogliamo filtrare tutti i risultati in cui il nome tutorial_author dovrebbe contenere "jay". Questo può essere gestito usandoSQL LIKE Clause insieme alla clausola WHERE.

Se la clausola SQL LIKE viene utilizzata insieme al carattere%, funzionerà come un metacarattere (*) come in UNIX, elencando tutti i file o le directory al prompt dei comandi. Senza un carattere%, la clausola LIKE è molto simile aequal to firmare insieme alla clausola WHERE.

Sintassi

Il seguente blocco di codice ha una sintassi SQL generica del comando SELECT insieme alla clausola LIKE per recuperare i dati da una tabella MySQL.

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • È possibile specificare qualsiasi condizione utilizzando la clausola WHERE.

  • È possibile utilizzare la clausola LIKE insieme alla clausola WHERE.

  • È possibile utilizzare la clausola LIKE al posto di equals to cartello.

  • Quando LIKE viene utilizzato insieme al segno%, funzionerà come una ricerca di meta caratteri.

  • È possibile specificare più di una condizione utilizzando AND o OR operatori.

  • Una clausola WHERE ... LIKE può essere utilizzata insieme al comando SQL DELETE o UPDATE anche per specificare una condizione.

Utilizzo della clausola LIKE nel prompt dei comandi

Questo utilizzerà il comando SQL SELECT con la clausola WHERE ... LIKE per recuperare i dati selezionati dalla tabella MySQL - tutorials_tbl.

Esempio

Il seguente esempio restituirà tutti i record da tutorials_tbl tabella per la quale il nome dell'autore termina con jay -

root@host# 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>

Utilizzo della clausola LIKE all'interno dello script PHP

È possibile utilizzare una sintassi simile della clausola WHERE ... LIKE nella funzione PHP - mysql_query(). Questa funzione viene utilizzata per eseguire il comando SQL e successivamente un'altra funzione PHP -mysql_fetch_array() può essere utilizzato per recuperare tutti i dati selezionati, se la clausola WHERE ... LIKE viene utilizzata insieme al comando SELECT.

Ma se la clausola WHERE ... LIKE viene utilizzata con il comando DELETE o UPDATE, non sono necessarie ulteriori chiamate di funzione PHP.

Esempio

Prova il seguente esempio per restituire tutti i record dal file tutorials_tbl tabella per la quale contiene il nome dell'autore 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);
?>