دستور Like در SQL برای فراخوانی داده‌های درون ستون خاصی از جدول بر اساس الگوی مشخص شده استفاده می‌شود. دستور Like درون بند WHERE در SQL همراه با عبارت‌های UPDATE و DELETE و SELECT به‌کار می‌رود. علت استفاده از این دستور، برای فیلتر کردن ردیف‌های جدوا بر اساس الگوی داده‌ شده است. این الگو‌ها با استفاده از «کاراکترهای جانشین» (Wildcards) مشخص می‌شوند. الگوهای ارسال شده به دستور Like، بیشتر مربوط به نوع داده‌های عددی و رشته‌ای هستند. البته توصیه شده که از این دستور، بیشتر همراه با نوع داده رشته استفاده کنیم. اما به هرحال تقریبا می‌توان از این دستور بر روی هر نوع داده‌ای استفاده کرد.

فهرست مطالب این نوشته
997696

در این مطلب از مجله فرادرس، درباره دستور Like در SQL توضیحات کاملی ارائه کرده‌ایم. روش استفاده از این دستور را در کنار سایر عبارت‌های کلیدی SQL مانند AND و OR و غیره بررسی کرده‌ و کار کردن با کاراکترهای جانشین و Escape را نیز همراه با ارائه مثال‌های کدنویسی شده تمرین کرده‌ایم. در نهایت، چند مورد از کاربردهای دستور Like را فهرست کردیم.

دستور Like در SQL چیست؟

دستور Like برای پیداکردن داده‌هایی در جدول استفاده می‌شود که دارای الگوی خاصی هستند. این داده‌ها می‌توانند از هر نوعی باشند اما از دستور Like بیشتر بر روی داده‌های متنی استفاده می‌شود. برای تایین الگو‌های مورد استفاده دستور Like از کاراکترهای جانشین استفاده می‌کنیم.

برای مثال، فرض کنیم، باید لیستی از همه دانش‌آموزانی تهیه کنیم که نام آن‌ها با حرف K

 شروع می‌شود. با استفاده از دستور Like در SQL می‌توانیم داده‌های این لیست را از جدول واکشی کنیم. در کد زیر کوئری لازم برای این کار را پیاده‌سازی کرده‌ایم.

1WHERE student_name LIKE 'K%';

در کد بالا کاراکتر %

 یک نوع از کاراکترهای جانشین است. این کاراکتر به نمایندگی از صِفر، یک یا چند کاراکتر دیگر در کوئری قرار داده شده است. بنابراین عبارت K%

 به این معنا است که این کوئری نام همه دانش‌آموزانی را نشان خواهد داد که با حرف K

شروع می‌شود.

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

سینتکس دستور Like در SQL

شکل پایه سینتکس دستور LIKE

 به صورت کد نوشته شده در پایین است.

1SELECT column1, column2, ...
2FROM table_name
3WHERE columnn LIKE specified_pattern;

چطور با کمک فرادرس SQL را حرفه‌ای یاد بگیریم؟

در صورت تازه‌کار بودن نسبت به زبان برنامه‌نویسی SQL، برای ارتقای توانایی‌های عملکردی خود می‌توانید به وب‌سایت آموزشی فرادرس مراجعه کنید. در فرادرس، فیلم‌های بسیار مناسبی از دوره‌های مختلف برای آموزش SQL فراهم شده است. در این دوره‌‌های آموزشی می‌توانید مهارت‌های سطح مبتدی، متوسط و حرفه‌ای را به‌خوبی آموزش ببنید. دروه‌های که در ادامه آمده‌اند به ترتیب سطوح مختلف مهارت را آموزش می‌دهند.

مجموعه آموزش SQL Server– مقدماتی تا پیشرفته

اما اگر در زمینه کار با SQL حرفه‌ای هستید،‌ برای افزایش مهارت‌های خود می‌توانید از فیلم‌های آموزشی سطح حرفه‌ای‌تر استفاده کنید. در صورت تمایل، با کلیک بر روی تصویر بالا می‌توانید وارد صفحه اصلی این مجموعه آموزش شده و از فیلم‌های بیشتری نیز بهره‌مند شوید.

در مرحله بعد Wildcard-ها را بررسی خواهیم کرد.

کاراکترهای Wildcard چه هستند؟

کاراکترهای جانشین یا Wildcard-ها کاراکترهای خاصی هستند که برای همخوان کردن داده‌ها با الگو‌های تعیین شده در کوئری‌های SQL استفاده می‌شوند. در جدول زیر Wildcard-هایی آمده‌اند که به صورت پیوسته با عملگر Like در پایگاه داده MySQL استفاده شده‌اند.

  1.  علامت درصد  %

      برای نمایش صِفر، یک یا چند کاراکتر به‌کار می‌رود.

  2. علامت «خط زیر» (Underscore) ـ

      برای نمایش عدد یا کاراکتر تنها به‌کار می‌رود.

در دستور Like کاراکترهای Wildcard که در بالا نشان داده شده‌اند را می‌توان به صورت جداگانه یا در ترکیب با هم استفاده کرد.

چند نفر مدیر داده در حال کار با کامپیوتر هستند. - دستور Like در SQL

فهرستی که در پایین نمایش داده شده، ماده WHERE

 را همراه با دستورات مختلف LIKE

در ترکیب با کارکترهای %

و _

نشان می‌دهد.

  1. کد WHERE SALARY LIKE ‘200%’

     هر مقداری را که با عدد 200

     شروع شود پیدا می‌کند.

  2. کد WHERE SALARY LIKE ‘%200%’

     هر مقداری که درونش حداقل یکبار 200

    آمده است.

  3. کد WHERE SALARY LIKE ‘_00%’

     هر مقداری که در موقعیت دوم و سوم آن 200

    قرارگرفته است.

  4. کد WHERE SALARY LIKE ‘2_%_%’

     هر مقداری که با 2

    شروع شود و حداقل از ۳ کارکتر تشکیل شده است.

  5. کد WHERE SALARY LIKE ‘%2’

     هر مقداری که با عدد 2

     تمام شود.

  6. کد WHERE SALARY LIKE ‘_2%3’

     هر مقداری که در موقعیت دوم عدد 2

    و در انتها عدد 3

    دارد.

  7. کد WHERE SALARY LIKE ‘2___3’

      هر مقدار عدد ۵ رقمی که با عدد 2

    شروع شده و با عدد 23

    تمام شود.

کاراکتر «٪» به عنوان کاراکتر جانشین

علامت %

برای نشان دادن تعداد کاراکترها از صِفر به بالا استفاده می‌شود. این کاراکتر جانشین با هر طول رشته‌ای سازگار می‌شود، که حتی شامل رشته‌های با طول صِفر هم هست.

مثال

برای اینکه بهتر این مطلب را درک کنیم، جدولی را به نام جدول مشتریان CUSTOMERS

 در نظر می‌گیریم. این جدول شامل اطلاعات شخصی مشتریان از قبیل نام NAME

 ، سن AGE

 ، آدرس ADDRESS

 و میزان درآمد SALARY

 آن‌ها است. در کد زیر کوئری مورد استفاده برای ساخت جدول را نمایش داده‌ایم.

1CREATE TABLE CUSTOMERS (
2   ID INT NOT NULL,
3   NAME VARCHAR (20) NOT NULL,
4   AGE INT NOT NULL,
5   ADDRESS CHAR (25),
6   SALARY DECIMAL (18, 2),       
7   PRIMARY KEY (ID)
8); 

الان با کمک کدهای نمایش داده شده پایین، باید چند مقدار مختلف را در این جدول، وارد کنیم. در کد پایین از عبارت INSERT در SQL استفاده کرده‌ایم.

1INSERT INTO CUSTOMERS VALUES 
2(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
3(2, 'Khilan', 25, 'Delhi', 1500.00 ),
4(3, 'Kaushik', 23, 'Kota', 2000.00 ),
5(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
6(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
7(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
8(7, 'Muffy', 24, 'Indore', 10000.00 );

با اجرای کوئری بالا، به صورتی که در پایین دیده می‌شود، جدول مورد نظر ساخته شد.

نمونه جدولی از مشخصات کارمندانه در پایگاه داده
«برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید»

اکنون می‌خواهیم رکوردهای درون جدول مشتری‌ها CUSTOMERS

را نمایش دهیم، اما به شرطی که عدد نمایش دهنده میزان حقوق در رکورد با رقم 200

 شروع شود. کوئری مورد نظر را به شکل زیر می‌نویسیم.

1SELECT * FROM CUSTOMERS WHERE SALARY LIKE '200%';

خروجی حاصل از اجرای کوئری بالا به صورت جدول زیر به کاربر نمایش داده می‌شود.

نمونه جدولی از مشخصات کارمندان در پایگاه داده
«برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید»

کاراکتر «_» به عنوان کاراکتر جانشین

Wildcard یا کاراکتر جانشین خط زیر _

نشان‌دهنده عدد یا کاراکتر به صورت مجزا است. یعنی حتما یک کاراکتر نه بیشتر و نه کمتر. هر خط زیر _

به دنبال یک کاراکتر در رشته یا عدد می‌گردد.

دختری در حال کار با لپتاپ است. سگش به او خیره شده است.

مثال اول

در کادر زیر کوئری نوشته‌ایم که برای نمایش رکورد‌های جدول مشتریان CUSTOMERS

به‌کار برده می‌شود، به این شرط که نام مشتری با حرف K

 شروع شده و حداقل به طول چهار کاراکتر باشد. توجه کنید که جدول مشتریان CUSTOMERS

را در بالای همین مطلب تعریف کرده‌ایم.

1SELECT * FROM CUSTOMERS WHERE NAME LIKE 'K___%';

خروجی حاصل از اجرای کوئری بالا به صورت جدول زیر به کاربر نمایش داده می‌شود.

نمونه جدولی از مشخصات کارمندان در پایگاه داده
«برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید»

مثال دوم

در کادر زیر کوئری نوشته‌ایم که همه رکورد‌های جدول مشتریان CUSTOMERS

را نمایش می‌دهد. البته به شرط اینکه در سومین حرف از کلمه نام کارکتر m

 قرار گرفته باشد.

1SELECT * FROM CUSTOMERS WHERE NAME LIKE '__m%';

با اجرای کوئری بالا بر روی جدول مشتریان، جدول زیر را به عنوان خروجی می‌بینیم.

نمونه جدولی از مشخصات کارمندان در پایگاه داده
«برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید»

دستور Like در SQL همراه با عملگر OR

همچنین از دستور Like می‌توان در ساخت الگوهای پیچیده‌ای از رشته‌ها برای انتخاب ‌داده‌های درون جدول نیز استفاده کرد. برای ساخت الگو‌های پیچیده‌ می‌توانیم از عملگرهای AND

 یا OR

 استفاده کنیم.

سینتکس استفاده از دستور Like همراه با عملگر OR

کدی که در کادر زیر نوشته‌ایم، حالت پایه و کلی سینتکس استفاده از دستور Like همراه با عملگر OR را نشان می‌دهد.

1SELECT column1, column2, ...
2FROM table_name
3WHERE column1 LIKE pattern1 OR column2 LIKE pattern2 OR ...;

مثال

در کادر زیر، کوئری SQL، همه رکوردهای مشتریان را فراخوانی می‌کند. اما این فراخوانی دو شرط اصلی دارد. حداقل، یکی از این دو شرط باید بر قرار باشد.

  1. مشتریانی که نام آن‌ها با حرف C

     شروع و با حرف i

     تمام شود. این روش نمایش الگو را با کد ‘C%i’

      نشان می‌دهیم.

  2. مشتریانی که نام آن‌ها با حرف K

    تمام می‌شود. این روش نمایش الگو را با کد ‘%k’

     نشان می‌دهیم.

1SELECT * FROM CUSTOMERS WHERE NAME LIKE 'C%i' OR NAME LIKE '%k';

با اجرای کوئری بالا جدول زیر در خروجی به کاربر نمایش داده می‌شود.

نمونه جدولی از مشخصات کارمندان در پایگاه داده
«برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید»

بعد از اینکه داده‌های مورد نظرمان را در جدول اصلی با کمک کوئری نوشته شده پیدا کردیم،برای نمایش به کاربر در خروجی می‌توانیم داده‌ها را طبق نظر خود منظم کنیم. این داده‌ها را می‌توان بر اساس نام، آدرس، سن یا حتی میزان درآمد به صورت صعودی یا نزولی منظم کرد.

برای اینکه با روش منظم کردن داده‌ها در جدول یا برای نمایش در خروجی نهایی به کاربر آشنا شوید، می‌توانید مطلب دستور order by در sql – از کاربرد تا نحوه استفاده به زبان ساده را در مجله فرادرس مطالعه کنید.

عملگر NOT همراه با شرط LIKE

از عملگر NOT همراه با شرط LIKE در مواقعی استفاده می‌کنیم که کاراکتر خاصی نباید در الگوی جست‌وجو قرار بگیرد. در واقع، باید ردیف‌هایی استخراج شوند که شامل رشته مشخص شده در الگوی جست‌وجو نیستند.

سینتکس دستور Like همراه با عملگر NOT

کدی که در کادر زیر نمایش داده شده، حالت پایه سینتکسی است که از دستور NOT LIKE

 در SQL استفاده می‌کند.

1SELECT column1, column2, ...
2FROM table_name
3WHERE column1 NOT LIKE pattern;

مثال

در کوئری داده شده پایین، همه مشتریانی را فراخوانی می‌کنیم که نامشان با حرف K

شروع نشده است.

1SELECT * FROM CUSTOMERS WHERE NAME NOT LIKE 'K%';

با اجرای کوئری بالا جدول زیر در خروجی به کاربر نمایش داده می‌شود.

نمونه جدولی از مشخصات کارمندان در پایگاه داده
«برای مشاهده تصویر در اندازه اصلی، روی آن کلیک کنید»

کاراکترهای Escape همراه با دستور Like

کارکترهای Escape در SQL برای حذف کردن بعضی از کاراکترهای مشخص Wildcard از عبارت‌های حاوی دستور Like استفاده می‌شود. با انجام دادن این کار می‌توانیم از این کاراکترهای در شکل واقعی خودشان استفاده کنیم.

بعضی از کاراکترها مانند علامت کوتیشن یگانه

 ، علامت درصد %

و علامت خط زیر _

در SQL رزرو شده‌اند تا فرمان‌های خاصی را اجرا کنند. با استفاده از کارکتر Escape می‌توانیم از اجرای فرمان مربوط به این نوع کارکترها خودداری کنیم.

یک لپتاپ بر روی نمادی از استخر داده قرار گرفته است.

برای مثال، اگر نیاز داریم که در شرط دستور Like به دنبال کاراکتر %

به عنوان ثابت عینی بگردیم، فقط کافی است که از کلمه کلیدی ESCAPE

 استفاده کنیم. کاراکترهای Escape فقط به عنوان کاراکترهای مجزا تعریف می‌شوند. پیشنهاد می‌شود کاراکتری را انتخاب کنید که در داده‌های جدول وجود ندارد.

سینتکس استفاده از دستور ESCAPE

حالت سینتکس پایه‌ای که برای عملگر LIKE همراه با دستور ESCAPE استفاده می‌کنیم، در کادر زیر نوشته شده است.

1SELECT column1, column2, ...
2FROM table_name
3WHERE column1 LIKE 'pattern ESCAPE escape_character';

در شبه کد بالا برای نمایش سینتکس از پارامترهایی استفاده شده که در فهرست زیر توضیح داده‌ایم.

  • pattern

     : در جایگاه این کلمه باید الگویی را قرار دهیم که به دنبال رشته‌های سازگار با آن می‌گردیم.

  • ESCAPE

     : کلمه کلیدی است که کاراکترهای ESCAPE را نشان می‌دهد.

  • escape_character

     : در جایگاه این عبارت کاراکترهایی را قرار می‌دهیم که قرار است به عنوان کاراکتر ESCAPE عمل کنند.

مثال اول

در این بخش با استفاده از کوئری زیر جدول جدیدی را به عنوان جدول کارمندان EMPLOYEE

 ایجاد می‌کنیم.

1CREATE TABLE EMPLOYEE (
2   SALARY DECIMAL (18,2) NOT NULL,
3   BONUS_PERCENT VARCHAR (20)
4);

الان می‌توانیم با استفاده از دستور INSERT

 مانند کوئری زیر داده‌های جدیدی را به این جدول وارد کنیم.

1INSERT INTO EMPLOYEE VALUES 
2(67000.00, '45.00'),
3(54000.00, '20.34%'),     
4(75000.00, '51.00'),        
5(84000.00, '56.82%');

جدول EMPLOYEE

شامل میزان درامد کارمندان شرکت فرضی است. به علاوه درصد پاداشی که به حقوق آن‌ها اضافه شده است. در زیر نمایشی از وضعیت جدول EMPLOYEE

را می‌بینید.

SALARY BONUS_PERCENT
67000.00 45.00
54000.00 20.34%
75000.00 51.00
84000.00 56.82%

اکنون با کوئری زیر می‌خواهیم، رکورد‌های جدول EMPLOYEE

را نشان دهیم به این شرط که ستون درصد پاداش BONUS_PERCENT

 شامل ثابع عینی %

باشد.

1SELECT * FROM EMPLOYEE 
2WHERE BONUS_PERCENT LIKE'%!%%' ESCAPE '!';

خروجی حاصل از اجرای کد بالا به شکل جدول زیر به کاربر نمایش داده می‌شود.

SALARY BONUS_PERCENT
54000.00 20.34%
84000.00 56.82%

مثال دوم

در این قسمت، رکورد‌هایی را فراخوانی می‌کنیم که داده مربوط به آن‌ها در ستون BONUS_PERCENT

با عدد 2

 شروع شده و در خودشان شامل کاراکتر %

به عنوان ثابت بشوند.

1SELECT * FROM EMPLOYEE 
2WHERE BONUS_PERCENT LIKE'2%!%%' ESCAPE '!';

خروجی حاصل از اجرای کوئری بالا به شکل جدول زیر نمایش داده می‌شود.

SALARY BONUS_PERCENT
54000.00 20.34%

کاربرد‌های دستور like در SQL

دستور Like در مدیریت و اجرای عملیات بر روی پایگاه داده SQL کاربردهای گوناگونی دارد. یکی از بهترین روش‌های آموزش استفاده از تکنیک‌های برنامه‌نویسی، آموزش این تکنیک‌ها به صورت پروژه‌ محور است. به همین منظور پیشنهاد می‌کنیم که فیلم آموزش پروژه محور ساخت دیکشنری برای دیتابیس با SQL Server از فرادرس را مشاهده کنید. در این فیلم تقریبا از اکثر تکنیک‌های این زبان برنامه‌نویسی استفاده شده است. لینک مربوط به این فیلم را در ادامه نمایش داده‌ایم.

در ادامه چند مورد از کاربرد‌های خاص دستور like در SQL را فهرست كرده‌ايم.

    • این دستور برای استخراج داده‌هایی که با الگوی مورد نظر همخوانی دارند، به مدیران پایگاه داده کمک می‌کند.
    • با کمک این دستور می‌توانیم، کوئری‌های شامل الگوهای پیچیده رجکسی را بر روی داده‌های خود اعمال کنیم.
    • با کمک این دستور کوئری‌های بسیار پیچیده شکل ساده‌ای به خود می‌گیرند. هم از لحاظ نوشتن و هم از جهت اجرا کردن بسیار ساده‌تر می‌شوند.

آموزش های تکمیلی مربوط به کار با پایگاه داده SQL Server

در ادامه سه مورد از فیلم‌های آموزش تکمیلی، مربوط به کار با پایگاه داده SQL Server را معرفی کرده‌ایم. این آموزش‌ها توسط فرادرس در دو سطح مختلف مهارتی، با جزییات کامل و بهترین کیفیت ممکن ارائه شده‌اند. با بررسی و تمرین این فیلم‌های آموزشی از فرادرس، می‌توانیم مهارت‌های خودمان را تا سطح بسیار خوبی ارتقا بدهیم.

مجموعه آموزش پایگاه داده – مقدماتی تا پیشرفته

البته در صورت تمایل، می‌توانید بر روی تصویر بالا کلیک کرده و وارد صفحه اصلی این مجموعه آموزش شوید. در صفحه اصلی این مجموعه آموزشی، آموزش‌های بیشتر و حرفه‌ای‌تر حتی درباره کار با سایر پایگاه‌های داده و در پلتفرم‌های مختلف در دسترس هستند.

جمع بندی

در این مطلب از مجله فرادرس به بررسی دستور like پرداختیم. دیدیم که با استفاده از دستور like می‌توانیم از الگوهای مورد نظرمان برای پیداکردن داده‌های موجود در پایگاه داده استفاده کنیم. به همچنین متوجه شدیم که از دستور Like می‌توان همراه با بند WHERE در عبارت‌های UPDATE و DELETE و SELECT استفاده کرد.

دستور like یکی از دستورهای بسیار مفید در SQL است. همینطور که در مطلب بالا نوشتیم این دستور علاوه بر عبارت‌های گفته شده می‌تواند همراه با عملگرهای OR و NOT نیز استفاده شود. با استفاده از کاراکترهای Escape هم می‌توانیم کاراکترها جانشین را به صورت ثابت عینی در داده‌ها استفاده کنیم. توانایی کار با این دستورات در SQL مهارت‌های جست‌وجو و استخراج داده را در حد بسیار خوبی ارتقا می‌دهد و یکی از بهترین مشخصه‌های مدیران پایگاه داده حرفه‌ای است.

source

توسط expressjs.ir