MySQL - cláusula LIKE

Vimos o SQL SELECTcomando para buscar dados da tabela MySQL. Também podemos usar uma cláusula condicional chamada deWHERE cláusula para selecionar os registros necessários.

Uma cláusula WHERE com o sinal 'igual a' (=) funciona bem onde queremos fazer uma correspondência exata. Como se "tutorial_author = 'Sanjay'". Mas pode haver um requisito em que queremos filtrar todos os resultados em que tutorial_author name deve conter "jay". Isso pode ser tratado usandoSQL LIKE Clause junto com a cláusula WHERE.

Se a cláusula SQL LIKE for usada junto com o caractere%, ela funcionará como um metacaractere (*) como no UNIX, ao listar todos os arquivos ou diretórios no prompt de comando. Sem um caractere%, a cláusula LIKE é muito semelhante àequal to assinar junto com a cláusula WHERE.

Sintaxe

O bloco de código a seguir possui uma sintaxe SQL genérica do comando SELECT junto com a cláusula LIKE para buscar dados de uma tabela MySQL.

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • Você pode especificar qualquer condição usando a cláusula WHERE.

  • Você pode usar a cláusula LIKE junto com a cláusula WHERE.

  • Você pode usar a cláusula LIKE no lugar do equals to placa.

  • Quando LIKE é usado junto com o sinal%, ele funcionará como uma pesquisa de metacaracteres.

  • Você pode especificar mais de uma condição usando AND ou OR operadores.

  • Uma cláusula WHERE ... LIKE pode ser usada junto com o comando DELETE ou UPDATE SQL também para especificar uma condição.

Usando a cláusula LIKE no prompt de comando

Isso usará o comando SQL SELECT com a cláusula WHERE ... LIKE para buscar os dados selecionados da tabela MySQL - tutorials_tbl.

Exemplo

O exemplo a seguir retornará todos os registros do tutorials_tbl tabela para a qual o nome do autor termina com 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>

Usando a cláusula LIKE dentro do script PHP

Você pode usar uma sintaxe semelhante da cláusula WHERE ... LIKE na função PHP - mysql_query(). Esta função é usada para executar o comando SQL e posteriormente outra função PHP -mysql_fetch_array() pode ser usado para buscar todos os dados selecionados, se a cláusula WHERE ... LIKE for usada junto com o comando SELECT.

Mas se a cláusula WHERE ... LIKE estiver sendo usada com o comando DELETE ou UPDATE, nenhuma outra chamada de função PHP será necessária.

Exemplo

Experimente o exemplo a seguir para retornar todos os registros do tutorials_tbl tabela para a qual o nome do autor contém 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);
?>