Mysql-like-clause
MySQL-LIKE句
MySQLテーブルからデータを取得するSQL SELECT コマンドを見てきました。 WHERE 句と呼ばれる条件句を使用して、必要なレコードを選択することもできます。
「等しい」記号(=)を含むWHERE句は、完全一致を実行する場合に正常に機能します。 「tutorial_author = 'Sanjay'」の場合のように。 ただし、tutorial_authorの名前に「jay」が含まれるすべての結果を除外する必要がある場合があります。 これは、* SQL LIKE句*とWHERE句を使用して処理できます。
SQL LIKE句を%文字とともに使用すると、UNIXの場合のようにメタ文字(*)のように機能しますが、コマンドプロンプトですべてのファイルまたはディレクトリを一覧表示します。 %文字がない場合、LIKE句は、WHERE句とともに*等号*記号と非常に同じです。
構文
次のコードブロックには、MySQLテーブルからデータをフェッチするための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句を使用して、選択したデータをMySQLテーブル( tutorials_tbl )からフェッチします。
例
次の例は、著者名が jay で終わる tutorials_tbl テーブルからすべてのレコードを返します-
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>
PHPスクリプト内でLIKE句を使用する
PHP関数であるWHERE … LIKE句の同様の構文(* mysql_query())を使用できます。 この関数は、SQLコマンドを実行するために使用され、後で別のPHP関数-SELECTコマンドとともにWHERE … LIKE句が使用される場合、選択されたすべてのデータを取得するために mysql_fetch_array()*を使用できます。
しかし、WHERE … LIKE句がDELETEまたはUPDATEコマンドで使用されている場合、それ以上のPHP関数呼び出しは必要ありません。
例
著者名に jay が含まれる tutorials_tbl テーブルからすべてのレコードを返すには、次の例を試してください-
<?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);
?>