Mysqli-like-clause

提供:Dev Guides
移動先:案内検索

MySQLi-LIKE句

MySQLiテーブルからデータを取得するSQL SELECT コマンドを見てきました。 WHERE 句という条件句を使用して、必要なレコードを選択することもできます。

等号(=)を含むWHERE句は、完全一致を実行する場合に正常に機能します。 「name = 'sai'」の場合のように。 ただし、名前に「johar」を含める必要があるすべての結果を除外する必要がある場合があります。 これは、SQL LIKE 句とWHERE句を使用して処理できます。

SQL LIKE句を%文字とともに使用すると、UNIXではメタ文字(*)のように機能しますが、コマンドプロンプトですべてのファイルまたはディレクトリを一覧表示します。

%文字がない場合、LIKE句は等号とWHERE句に非常に似ています。

構文

MySQLiテーブルからデータを取得するためのLIKE句とともにSELECTコマンドの一般的なSQL構文を示します-

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • WHERE句を使用して、任意の条件を指定できます。
  • WHERE句とともにLIKE句を使用できます。
  • 等号の代わりにLIKE句を使用できます。
  • LIKEを%記号と共に使用すると、メタ文字検索のように機能します。
  • AND または OR 演算子を使用して、複数の条件を指定できます。
  • WHERE …​ LIKE句をDELETEまたはUPDATE SQLコマンドとともに使用して、条件を指定することもできます。

コマンドプロンプトでのLIKE句の使用

これは、SQL SELECTコマンドとWHERE …​ LIKE句を使用して、選択したデータをMySQLiテーブルtutorials_infからフェッチします。

次の例は、作成者名が johar で終わる tutorials_inf テーブルからすべてのレコードを返します-

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * from tutorials_inf
   -> WHERE name LIKE '%johar';
+----+-------+
| id | name  |
+----+-------+
|  2 | johar |
+----+-------+
1 row in set (0.00 sec)

mysql>

PHPスクリプト内でLIKE句を使用する

PHP関数* mysqli_query()にWHERE …​ LIKE句の同様の構文を使用できます。 この関数はSQLコマンドを実行するために使用され、後でWHERE …​ LIKE句がSELECTコマンドと共に使用される場合、別のPHP関数 mysqli_fetch_array()*を使用して選択されたすべてのデータをフェッチできます。

しかし、WHERE …​ LIKE句がDELETEまたはUPDATEコマンドで使用されている場合、それ以上のPHP関数呼び出しは必要ありません。

次の例を試して、名前に johar が含まれる tutorials_inf テーブルからすべてのレコードを返します-

<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = '';
   $dbname = 'TUTORIALS';
   $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);

   if(! $conn ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully<br>';
   $sql = 'SELECT * FROM tutorials_inf WHERE name LIKE "%johar%"';
   $result = mysqli_query($conn, $sql);
   $row = mysqli_fetch_array($result,MYSQLI_ASSOC);

   printf ("%s \n",$row["name"]);
   mysqli_free_result($result);
   mysqli_close($conn);
?>

サンプル出力は次のようになります-

Connected successfully
johar