środa, 19 września 2018

MySQL – klauzula LIKE

MySQL – klauzula LIKE


Używaliśmy polecenie SQL SELECT, aby pobrać dane z tabeli MySQL. Możemy również użyć klauzuli warunkowej zwanej klauzulą WHERE w celu wybrania wymaganych rekordów.
Klauzula WHERE ze znakiem równości (=) działa dobrze, gdy chcemy dokładnie dopasować wynik. Na przykład, jeśli "kurs_author ="Berg". Ale może istnieć wymóg, w którym chcemy odfiltrować wszystkie wyniki, w których nazwa kurs_author powinna zawierać "Ber". Można to zrobić za pomocą klauzuli SQL LIKE wraz z klauzulą ​​WHERE.
Jeśli klauzula SQL LIKE zostanie użyta wraz ze znakiem %, będzie działać jak znak meta (*) tak jak w UNIX, kiedy wyświetli nam listę wszystkich plików lub katalogów w wierszu polecenia. Bez znaku %, klauzula LIKE jest taka sama jak znak równości w klauzuli ​​WHERE.
Składnia
Poniższy blok kodu ma ogólną składnię SQL polecenia SELECT oraz klauzulę LIKE służącą do pobierania danych z tabeli MySQL.
SELECT pole1, pole2,...poleN nazwa_tabeli1, nazwa_tabeli2...
WHERE pole1 LIKE wyrażenie1 [AND [OR]] pole2 = 'jakaś_wartość'
·        Możesz określić dowolny warunek za pomocą klauzuli WHERE.
·        Możesz użyć klauzuli LIKE wraz z klauzulą ​​WHERE.
·        Możesz użyć klauzuli LIKE zamiast znaku równości.
·        Kiedy LIKE jest używany wraz ze znakiem %, to będzie działało jak wyszukiwanie znaków meta.
·        Możesz określić więcej niż jeden warunek za pomocą operatora AND lub OR.
·        Można użyć klauzuli WHERE ... LIKE wraz z poleceniem DELETE lub UPDATE, aby określić warunek.

Używanie klauzuli LIKE w wierszu polecenia

Użyjemy polecenia SQL SELECT z klauzulą ​​WHERE ... LIKE do pobrania wybranych danych z tabeli MySQL - kurs_tbl.
Przykład
Poniższy przykład zwróci wszystkie rekordy z tabeli kurs_tbl, dla której nazwa autora kończy się erg 
root@host# mysql -u root -p password;
Enter password:*******
mysql> use KURS;
Database changed
mysql>  select * from kurs_tbl
    -> where kurs_author like '%erg';
+---------+------------+-------------+-----------------+
| kurs_id | kurs_title | kurs_author | submission_date |
+---------+------------+-------------+-----------------+
|       1 | JavaScript | Berg        | 2018-02-02      |
|       2 | Nauka CSS  | K. Nelberg  | 2018-02-02      |
+---------+------------+-------------+-----------------+
2 rows in set (0.00 sec)

mysql>

Używanie klauzuli LIKE wewnątrz skryptu PHP

Możesz użyć podobnej składni klauzuli WHERE ... LIKE dla funkcji PHP - mysql_query(). Ta funkcja jest używana do wykonywania polecenia SQL, a później można użyć innej funkcji PHP - mysql_fetch_array () 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 dalsze wywoływanie funkcji PHP.
Przykład
Wypróbuj poniższy przykład, aby zwrócić wszystkie rekordy z tabeli kurs_tbl, dla której nazwa autora zawiera erg
<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Nie można się połączyć: ' . mysql_error());
   }
   $sql = 'SELECT kurs_id, kurs_title,
      kurs_author, submission_date
      FROM kurs_tbl
      WHERE kurs_author LIKE "%erg%"';

   mysql_select_db('KURS');
   $retval = mysql_query( $sql, $conn );
  
   if(! $retval ) {
      die('Nie można pobrać danych: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Kurs ID :{$row['kurs_id']}  <br> ".
      "Tytuł: {$row['kurs_title']} <br> ".
      "Autor: {$row['kurs_author']} <br> ".
      "Data : {$row['submission_date']} <br> ".
      "--------------------------------<br>";
   }
   echo "Dane pobrano pomyślnie\n";
   mysql_close($conn);
?>






Brak komentarzy:

Prześlij komentarz