عملگر LIKE در MySQL — راهنمای جامع

۴۴۲ بازدید
آخرین به‌روزرسانی: ۲۲ شهریور ۱۴۰۲
زمان مطالعه: ۳ دقیقه
عملگر LIKE در MySQL — راهنمای جامع

در راهنمای جامع SQL دیدیم که دستور SELECT در SQL برای دریافت داده‌ها از یک جدول MySQL مورد استفاده قرار می‌گیرد. همچنین می‌توانیم از یک عملگر شرطی که بند WHERE نامیده می‌شود، برای انتخاب رکوردهای خاص استفاده کنیم.

بند WHERE به همراه علامت تساوی (=) در مواردی که می‌خواهیم موردی که کاملاً مطابقت دارد را بیابیم به خوبی عمل می‌کند. برای مثال می‌توانیم با استفاده از عبارت 'tutorial_author = 'Sanjay همه رکوردهای مربوطه را به دست بیاوریم. اما ممکن است در مواردی لازم باشد که همه نتایجی را که نام tutorial_author شامل عبارت «jay» است انتخاب کنیم. این وضعیت از طریق استفاده از عملگر LIKE در SQL به همراه بند WHERE میسر خواهد بود.

اگر عملگر LIKE در SLQ به همراه کاراکتر % مورد استفاده قرار گیرد، در این صورت مانند یک کاراکتر متا (*) در UNIX عمل می‌کند که همه فایل‌ها در دایرکتوری‌هایی که در اعلان فرمان وجود دارند را فهرست می‌کند. بدون وجود کاراکتر % عملگر LIKE کاملاً همانند علامت تساوی در بند WHERE عمل خواهد کرد.

ساختار

در قطعه کد زیر ساختار معمول SQL برای دستور SELECT به همراه عملگر LIKE برای دریافت داده‌ها از یک جدول MySQL ارائه شده است:

SELECT field1, field2,...fieldN table_name1, table_name2...

WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • شما می‌توانید هر شرطی را با استفاده از بند WHERE تعیین کنید.
  • می‌توانید از عملگر LIKE به همراه بند WHERE استفاده کنید.
  • می‌توانید از عملگر LIKE به جای نشانه تساوی استفاده کنید.
  • می‌توانید از LIKE به همراه نشانه % به عنوان یک جستجوی کاراکتر متا استفاده کنید.
  • می‌توانید بیش از یک شرط را با استفاده از عملگرهای AND یا OR مورد استفاده قرار دهید.
  • یک بند WHERE… LIKE می‌تواند به همراه دستورهای DELETE یا UPDATE در SQL برای تعیین شرط مورد استفاده قرار گیرد.

استفاده از عملگر LIKE در اعلان فرمان

در این روش از دستور SELECT در SQL به همراه بند WHERE… LIKE برای دریافت داده‌ها از جدول MySQL استفاده می‌شود.

مثال

در نمونه کد زیر همه رکوردهایی از جدول tutorials_tbl که نام مؤلف با jay پایان می‌پذیرد بازگشت می‌یابند.

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>

استفاده از بند LIKE درون اسکریپت PHP

می‌توانید از ساختار بند WHERE…LIKE درون یک تابع PHP به نام ()mysql_query استفاده کنید. این تابع برای اجرای دستورهای SQL استفاده می‌شود و در ادامه تابع دیگر PHP به نام ()mysql_fetch_array برای دریافت داده‌ها از میان همه داده‌های بازگشتی در صورتی که از بند WHERE…LIKE به همراه دستور SELECT استفاده شده باشد، به کار گرفته می‌شود.

اما اگر بند WHERE…LIKE به همراه دستورهای DELETE یا UPDATE استفاده شود، در این صورت به فراخوانی تابع PHP دیگری هم نیاز خواهیم داشت.

مثال

در نمونه کد زیر همه رکوردهای جدول tutorials_tbl که در آن نام مؤلف شامل 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);
?>

اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد می‌کنیم موارد زیر را نیز ملاحظه کنید:

==

بر اساس رای ۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
tutorialspoint
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *