با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش MySQL را دنبال می کنند. در بخش های قبلی با دستور شرطی WHERE در MySQL آشنا شدیم که امکان انتخاب بخشی از رکوردهای یک یا چند جدول را در MySQL را فراهم می کند، اما در برخی موارد ما نیاز داریم که انتخاب دقیق تری انجام دهیم، به عنوان مثال شاید بخواهیم که رکوردهایی که ابتدای آن با یک یا چند حرف مشخص شروع شده و یا شامل آن ها باشد را انتخاب کنیم، برای اینگونه موارد می توانیم از دستور شرطی LIKE در MySQL استفاده کنیم، که ادامه ی این مبحث طرز استفاده از دستور LIKE در MySQL را بررسی می کنیم.
در ادامه ی این آموزش سینتکس دستور LIKE در MySQL و مثال هایی از آن را ارائه کرده ایم.
دستور WHERE عملکرد عملگرهای از جمله = را پیاده سازی می کند، و تمام مقادیر یک فیلد را مطابقت می دهد.
اما دستور شرطی LIKE در MySQL برای فیلتر کردن یک جستجو بسیار مناسب است.
استفاده از دستور LIKE در MySQL به همراه کاراکتر ٪ کار فیلتر جستجوها را انجام می دهد.
ساختار عمومی سینتکس دستور DELETE در MySQL برای استخراج دادها از جداول به صورت زیر است :
1 2 | SELECT field1, field2,...fieldN table_name1, table_name2... WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue' |
در این بخش یک نمونه کد از دستور شرطی LIKE در MySQL به همراه شرط WHERE ارائه شده است.
مثال-۱
در مثال زیر تمام رکوردها از جدول tutorials_tbl که فیلد name آن ها با jay پایان می یابد، انتخاب می شوند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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> |
شما می توانید از سینتکس WHERE…LIKE در تابع ()mysql_query در زبان PHP استفاده کنید.
تابع فوق برای اجرای دستورات SQL استفاده می شود و از تابع ()mysql_fetch_array برای استخراج تمام داده ها استفاده می شود.
اگر ساختار WHERE … LIKE با دستور DELETE یا UPDATE مورد استفاده قرار بگیرد، پس هیچ تابع فراخوانی PHP دیگری مورد نیاز است.
مثال-۲
در مثال زیر تمام رکوردها از جدول tutorials_tbl که فیلد name آن ها شامل jay باشد، انتخاب می شوند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?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); ?> |
برای جستجوهای کلی در جداول MySQL، دستور WHERE گزینه ی مناسبی است، اما برای جستجوهای دقیق و جزئی تر می توان از دستور شرطی LIKE در MySQL استفاده کرد.