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 -
[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>
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);
?>