SQL - کار با LIKE در دیتابیس
توی این مقاله شما یاد میگیرین چطور از LIKE برای پیدا کردن ردیف هایی که شامل پترن خاصی هستند، استفاده کنید. همونطور که حدس میزنین از LIKE توی WHERE استفاده میکنیم تا اطلاعات رو فیلتر کنیم.
مقدمه ای بر LIKE
فرض کنین میخوایم یه مشتری رو پیدا کنیم ولی دقیقا یادمون نمیاد اسمش چیه. فقط میدونیم اسمش با یه چیزی مثل Jan شروع میشه. رفتن توی جدول مشتری ها و بررسی کردن تک تکشون وقت زیادی میگیره ( چون تعدادشون زیاده ).
پس ما نیاز داریم فقط کاربرایی بهمون نشون داده بشه که اسمشون با Jan شروع میشه. توی این شرایط از LIKE استفاده میکنیم و دستورش به شکل زیره:
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE 'Jen%';
و در نتیجه:

همونطور که میبینین، توی WHERE عبارت های خاصی بکار رفته.
first_name: که اسم ستونی هست که میخوایم برطبق اون فیلتر کنیمLIKE: که داریم در بارش میخونیم وoperatorما هست'Jen%'که پترن مورد جستجوی ما هست
این دستور وقتی به ما True میده که ستون first_name با Jan شروع شده باشه و در ادامش هر چی میتونه باشه ( یا اصلا چیزی نباشه ).
توی LIKE میتونیم پترن مورد نظرمون رو بسازیم و دنبالش بگردیم. عبارت % به ما میگه کجاش دیگه مهم نیست. یعنی وقتی % میذاریم یعنی مهم نیست. مثلا توی دستور بالا منظورمون از Jan% اینه که با Jan شروع بشه و ادامش دیگه مهم نیست. ( فقط با Jan شروع بشه )
همچنین اگه تعداد حرف برامون مهم باشه، میتونیم از _ استفاده کنیم. به تعدادی که میذاریم، پترن میسازیم با اون تعداد حرف. مثلا _Jan% یعنی قبل Jan فقط 1 حرف باشه و بعد Jan و در ادامه هرچی که باشه مهم نیست.
پس برای ساخت پترن از موارد زیر استفاده میکنیم:
%: هر دنباله دلخواه میتونه قرار بگیره_: به تعداد، حرف میتونه قرار بگیره
نحوه استفاده از LIKE به شکل زیر است:
value LIKE pattern
عبارت بالا True برمیگردونه اگه مقدار value مطابق پترن باشه.
برای مواردی که نیاز داریم طبق پترن نباشه مثل زیر عمل میکنیم:
value NOT LIKE pattern
این عبارت، وقتی True برمیگردونه که Value مطابق پترن نباشه.
مثال هایی از LIKE
اول بیاین چنتا پترن رو با هم بررسی کنیم. به پترن های زیر دقت کنین:
SELECT
'foo' LIKE 'foo', -- true
'foo' LIKE 'f%', -- true
'foo' LIKE '_o_', -- true
'bar' LIKE 'b_'; -- false
توضیح این پترن ها به ترتیب:
- توی مثال اول، پترن ما دقیقا یک کلمست (
foo) پس درواقعLIKEمثل برابری (=) عمل میکنه. - مثال دوم
Trueبرمیگردونه چون پترن ما میگه تمامی مقادیری که باfشروع بشه. - مثال سوم
Trueبرمیگردونه چون پترن میگه تمامی کلماتی که شامل3حرف باشن، یک حرفoوسطشون باشه و چپ و راست ( فقط یک حرف ) و مهم نیست چی باشه ( فقط1حرف حتما سمت چپ و1حرف سمت راست داشته باشه ) - مثال چهارم
Falseبرمیگردونه چون پترن میگه یک حرفbدر ابتدا باشه و در ادامه فقط1حرف باشه. ( کلمهbar، دو حرف در ادامه b داره ).
بیاین چنتا مثال ببینیم.
مثال زیر تمامی مشتری هایی که اسمشون شامل er باشه رو بهمون نشون میده ( فرق نمیکنه این er کجاست، اول، وسط یا آخر ... )
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE '%er%'
ORDER BY
first_name;
و در نتیجه :

توی مثال بعدی، ما دنبال مشتری هایی میگردیم که اسمشون با 1 حرف ( هر حرفی ) شروع بشه و در ادامه her داشته باشه و بعد هرچی داشت مهم نیست:
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE '_her%'
ORDER BY
first_name;
و در نتیجه:

برای توضیح بیشتر پترن _her%:
- با یک حرف شروع بشه (
_) - بعدش رشته
herقرار داشته باشه - و در ادامش هر چی به هر تعدادی میتونه باشه (
%)
توی مثال بعدی، ما میخوایم تمام کسایی رو که اسمشون با Jen شروع نمیشه پیدا کنیم:
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name NOT LIKE 'Jen%'
ORDER BY
first_name
و در نتیجه:

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