MySQL - Klauzula LIKE
Widzieliśmy SQL SELECTpolecenie pobierania danych z tabeli MySQL. Możemy również użyć klauzuli warunkowej o nazwieWHERE klauzulę, aby wybrać wymagane rekordy.
Klauzula WHERE ze znakiem „równości” (=) działa dobrze, gdy chcemy uzyskać dokładne dopasowanie. Na przykład jeśli "tutorial_author = 'Sanjay'". Ale może istnieć wymóg, w którym będziemy chcieli odfiltrować wszystkie wyniki, w których nazwa tutorial_author powinna zawierać „jay”. Można to zrobić za pomocąSQL LIKE Clause wraz z klauzulą WHERE.
Jeśli klauzula SQL LIKE jest używana wraz ze znakiem%, to będzie działać jak znak meta (*), jak w systemie UNIX, wyświetlając wszystkie pliki lub katalogi w wierszu polecenia. Bez znaku% klauzula LIKE jest taka sama jakequal to podpisać wraz z klauzulą WHERE.
Składnia
Poniższy blok kodu zawiera ogólną składnię SQL polecenia SELECT wraz z klauzulą LIKE do pobierania danych z tabeli MySQL.
SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
Możesz określić dowolny warunek za pomocą klauzuli WHERE.
Możesz użyć klauzuli LIKE razem z klauzulą WHERE.
Możesz użyć klauzuli LIKE zamiast equals to znak.
Gdy LIKE zostanie użyte wraz ze znakiem%, będzie działać jak wyszukiwanie metaznaków.
Możesz określić więcej niż jeden warunek za pomocą AND lub OR operatorów.
Klauzula WHERE ... LIKE może być używana wraz z poleceniem DELETE lub UPDATE SQL również w celu określenia warunku.
Korzystanie z klauzuli LIKE w wierszu polecenia
Spowoduje to użycie polecenia SQL SELECT z klauzulą WHERE ... LIKE w celu pobrania wybranych danych z tabeli MySQL - tutorials_tbl.
Przykład
Poniższy przykład zwróci wszystkie rekordy z pliku tutorials_tbl tabela, dla której nazwisko autora kończy się 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>
Używanie klauzuli LIKE wewnątrz skryptu PHP
Możesz użyć podobnej składni klauzuli WHERE ... LIKE w funkcji PHP - mysql_query(). Ta funkcja jest używana do wykonania polecenia SQL, a później innej funkcji PHP -mysql_fetch_array() można użyć do pobrania wszystkich wybranych danych, jeśli klauzula WHERE ... LIKE jest używana wraz z poleceniem SELECT.
Ale jeśli klauzula WHERE ... LIKE jest używana z poleceniem DELETE lub UPDATE, nie jest wymagane żadne dalsze wywołanie funkcji PHP.
Przykład
Wypróbuj poniższy przykład, aby zwrócić wszystkie rekordy z tutorials_tbl tabela, dla której zawiera nazwisko autora 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);
?>