Return True - SQL - کار با LIKE در دیتابیس

SQL - کار با LIKE در دیتابیس

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

مقدمه ای بر LIKE

فرض کنین میخوایم یه مشتری رو پیدا کنیم ولی دقیقا یادمون نمیاد اسمش چیه. فقط میدونیم اسمش با یه چیزی مثل Jan شروع میشه. رفتن توی جدول مشتری ها و بررسی کردن تک تکشون وقت زیادی میگیره ( چون تعدادشون زیاده ).

پس ما نیاز داریم فقط کاربرایی بهمون نشون داده بشه که اسمشون با Jan شروع میشه. توی این شرایط از LIKE استفاده میکنیم و دستورش به شکل زیره:

SELECT
	first_name,
        last_name
FROM
	customer
WHERE
	first_name LIKE 'Jen%';

و در نتیجه:

SQL - کار با LIKE در دیتابیس

همونطور که میبینین، توی 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;

و در نتیجه :

SQL - کار با LIKE در دیتابیس

توی مثال بعدی، ما دنبال مشتری هایی میگردیم که اسمشون با 1 حرف ( هر حرفی ) شروع بشه و در ادامه her داشته باشه و بعد هرچی داشت مهم نیست:

SELECT
	first_name,
	last_name
FROM
	customer
WHERE
	first_name LIKE '_her%'
ORDER BY 
        first_name;

و در نتیجه:

SQL - کار با LIKE در دیتابیس

برای توضیح بیشتر پترن  _her%:

  • با یک حرف شروع بشه ( _ )
  • بعدش رشته her قرار داشته باشه
  • و در ادامش هر چی به هر تعدادی میتونه باشه ( % )

توی مثال بعدی، ما میخوایم تمام کسایی رو که اسمشون با Jen شروع نمیشه پیدا کنیم:

SELECT
	first_name,
	last_name
FROM
	customer
WHERE
	first_name NOT LIKE 'Jen%'
ORDER BY 
        first_name

و در نتیجه:

SQL - کار با LIKE در دیتابیس

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

 

نظرات
تحلیل آزمایش پزشکی