دستور Like در SQL برای فراخوانی دادههای درون ستون خاصی از جدول بر اساس الگوی مشخص شده استفاده میشود. دستور Like درون بند WHERE در SQL همراه با عبارتهای UPDATE و DELETE و SELECT بهکار میرود. علت استفاده از این دستور، برای فیلتر کردن ردیفهای جدوا بر اساس الگوی داده شده است. این الگوها با استفاده از «کاراکترهای جانشین» (Wildcards) مشخص میشوند. الگوهای ارسال شده به دستور Like، بیشتر مربوط به نوع دادههای عددی و رشتهای هستند. البته توصیه شده که از این دستور، بیشتر همراه با نوع داده رشته استفاده کنیم. اما به هرحال تقریبا میتوان از این دستور بر روی هر نوع دادهای استفاده کرد.
در این مطلب از مجله فرادرس، درباره دستور 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 حرفهای هستید، برای افزایش مهارتهای خود میتوانید از فیلمهای آموزشی سطح حرفهایتر استفاده کنید. در صورت تمایل، با کلیک بر روی تصویر بالا میتوانید وارد صفحه اصلی این مجموعه آموزش شده و از فیلمهای بیشتری نیز بهرهمند شوید.
در مرحله بعد Wildcard-ها را بررسی خواهیم کرد.
کاراکترهای Wildcard چه هستند؟
کاراکترهای جانشین یا Wildcard-ها کاراکترهای خاصی هستند که برای همخوان کردن دادهها با الگوهای تعیین شده در کوئریهای SQL استفاده میشوند. در جدول زیر Wildcard-هایی آمدهاند که به صورت پیوسته با عملگر Like در پایگاه داده MySQL استفاده شدهاند.
- علامت درصد %
برای نمایش صِفر، یک یا چند کاراکتر بهکار میرود.
- علامت «خط زیر» (Underscore) ـ
برای نمایش عدد یا کاراکتر تنها بهکار میرود.
در دستور Like کاراکترهای Wildcard که در بالا نشان داده شدهاند را میتوان به صورت جداگانه یا در ترکیب با هم استفاده کرد.
فهرستی که در پایین نمایش داده شده، ماده WHERE
را همراه با دستورات مختلف LIKE
در ترکیب با کارکترهای %
و _
نشان میدهد.
- کد WHERE SALARY LIKE ‘200%’
هر مقداری را که با عدد 200
شروع شود پیدا میکند.
- کد WHERE SALARY LIKE ‘%200%’
هر مقداری که درونش حداقل یکبار 200
آمده است.
- کد WHERE SALARY LIKE ‘_00%’
هر مقداری که در موقعیت دوم و سوم آن 200
قرارگرفته است.
- کد WHERE SALARY LIKE ‘2_%_%’
هر مقداری که با 2
شروع شود و حداقل از ۳ کارکتر تشکیل شده است.
- کد WHERE SALARY LIKE ‘%2’
هر مقداری که با عدد 2
تمام شود.
- کد WHERE SALARY LIKE ‘_2%3’
هر مقداری که در موقعیت دوم عدد 2
و در انتها عدد 3
دارد.
- کد 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، همه رکوردهای مشتریان را فراخوانی میکند. اما این فراخوانی دو شرط اصلی دارد. حداقل، یکی از این دو شرط باید بر قرار باشد.
- مشتریانی که نام آنها با حرف C
شروع و با حرف i
تمام شود. این روش نمایش الگو را با کد ‘C%i’
نشان میدهیم.
- مشتریانی که نام آنها با حرف 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