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