PHP | MySQLのWHERE句のLIKEで部分一致、前方一致、後方一致を指定する方法

PHP,PHP MySQL

MySQLのWHERE句で部分一致、前方一致、後方一致を指定する方法とPHPサンプルコードを紹介しています。

確認環境

エックスサーバー
PHP 8.016

namevalue
Apple100
Pine200
Banana300
Orange400
サンプルで利用しているテーブル

WHERE句で部分一致

WHERE句で部分一致を実装するにはLIKE句を使って一致させたい語句を「%」で囲います。

以下のサンプルでは「a」を含むデータを検出していますので「Apple」「Banana」「Orange」がヒットします。

// クエリ
$sql = "SELECT * FROM `table_name` WHERE `name` LIKE '%a%'";

// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
	echo $dat['name'] . ' ';
}

// Apple Bnana Orange

大文字小文字を区別する場合はBINARY演算子を利用します。

以下のサンプルの場合「Apple」「A」は大文字ですのでヒットせず、小文字の「a」を含む「Banana」「Orange」がヒットします。

// クエリ
$sql = "SELECT * FROM `table_name` WHERE `name` LIKE '%a%'";

// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
	echo $dat['name'] . ' ';
}

// Bnana

WHERE句で前方一致

LIKE句は検索語句に付ける「%」を右側だけにする事で前方一致にする事が可能です。

以下のサンプルでは「A」から始まるデータのみを検出していますので「Apple」がヒットします。
もともとテストデータにはAはAppleしか含まれていませんが。

$sql = "SELECT * FROM `table_name` WHERE `name` LIKE 'A%'";

// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
	echo $dat['name'] . ' ';
}

// Apple

WHERE句で後方一致

LIKE句は検索語句に付ける「%」を左側だけにする事で後方一致にする事が可能です。

以下のサンプルでは末尾が「e」のデータのみを検出していますので「Apple」「Pine」「Orange」がヒットします。

$sql = "SELECT * FROM `table_name` WHERE `name` LIKE '%e'";

// クエリを実行
$res = $mysqli->query($sql);
while ($dat = $res->fetch_assoc()) {
	echo $dat['name'] . ' ';
}

// Apple PINE Orange

PHP,PHP MySQL

Posted by Yousuke.U