عملگر LIKE در عبارت WHERE

عملگر BETWEEN روشی است که یک محدوده از مقادیر را میان یک بازه تعیین می کند، تا سطرهایی که در خروجی نمایش داده شوند که مقدار ستون مورد نظر آنها، میان این بازه باشد. عملگر IN نیز یک بازه از مقادیر را تعیین می کند با این تفاوت که مقادیر در میان پرانتزهای باز و بسته قرار می گیرند و با ویرگول از هم جدا می شوند.

هدف از عملگر LIKE در عبارت WHERE تعیین یک الگو (pattern) است که می خواهیم تمامی مقادیری را درون ستون جستجو کنیم که مشابه این الگو باشند. به طور مثال تمامی کارمندانی که ابتدای نام آنها حرف A و یا انتهای نام آنها حرف a باشد. عملگر LIKE برای انجام حستجو در میان مقادیر ستون از دو widecard زیر استفاده می کند:

۱علامت % صفر، یک و یا چندین کاراکتر را در الگو نشان می دهد.

۲علامت _ (زیر خط یا underscore یا همان underline) یک تک کاراکتر (single character) را در الگو نشان می دهد.

عملگر LIKE در عبارت WHERE

عملگر BETWEEN روشی است که یک محدوده از مقادیر را میان یک بازه تعیین می کند، تا سطرهایی که در خروجی نمایش داده شوند که مقدار ستون مورد نظر آنها، میان این بازه باشد. عملگر IN نیز یک بازه از مقادیر را تعیین می کند با این تفاوت که مقادیر در میان پرانتزهای باز و بسته قرار می گیرند و با ویرگول از هم جدا می شوند.

هدف از عملگر LIKE در عبارت WHERE تعیین یک الگو (pattern) است که می خواهیم تمامی مقادیری را درون ستون جستجو کنیم که مشابه این الگو باشند. به طور مثال تمامی کارمندانی که ابتدای نام آنها حرف A و یا انتهای نام آنها حرف a باشد. عملگر LIKE برای انجام حستجو در میان مقادیر ستون از دو widecard زیر استفاده می کند:

۱علامت % صفر، یک و یا چندین کاراکتر را در الگو نشان می دهد.

۲علامت _ (زیر خط یا underscore یا همان underline) یک تک کاراکتر (single character) را در الگو نشان می دهد.

به دلیل اینکه علامت % به معنی صفر، یک یا چند کاراکتر است به عبارت دیگر در کوئری بالا باید نام کارمند تنها با A شروع شود و سپس به دنبال آن هر کارکتر و هر تعدادی می تواند بیاید.

مثالفهرست تمامی کارمندانی را نشان دهید که نام آنها با a خاتمه می یابد.

%a به این معنی است که الگو با هر تعداد و هر نوع کاراکتری شروع شود ولی حتما باید در انتهای آن یک عدد کاراکتر a وجود داشته باشد. توجه کنید که sql میان کاراکتر A و a تفاوت می گذارد. به عبارات دیگر اگر دنبال نام هایی هستیم که با A شروع شوند، پس Amir جز نتیجه نهایی است ولی amir جز نتجه نهایی نخواهد بود. همچنین اگر باید انتهای نام کاراکتر r قرار داشته باشد، پس میان Amir و AmiR تفاوت وجود دارد.

مثالتمامی کارمندانی را پیدا کنید که نام آنها با حرف A شروع و با حرف r پایان می یابد.

مثالتمامی کارمندانی را پیدا کنید که در هر محل از نام آنها ir وجود داشته باشد.

%ir% به این معنی است که با هر تعداد و هر چیزی شروع شود و با هر تعداد و هر چیزی خاتمه پیدا کند ولی حروف ir نیز در آن وجود داشته باشد. به طور مثال amir  یا Amir یا Amirreza یا AmirReza می توانند جز خروجی باشند ولی AmiRreza یا AmIr جز خروجی نیستند.

مثالتمامی کارمندانی را پیدا کنید که حرف i دومین کاراکتر از نام آنها باشد.

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

مثالفهرست تمامی کارمندانی را نشان دهید که دارای کمسیون هستند. به عبارت دیگر تمامی کارمندانی که ستون commission_pct آنها غیر NULL است.

در دستور بالا از IS NOT NULL استفاده کرده ایم که پاسخ دلخواه را به ما نشان می دهد ولی می توانیم از عملگر LIKE با الگوی %% استفاده کنیم.

مثالفهرست تمامی کاربرانی را نشان دهید که ابتدای نام آنها A باشد و شغل آنها SA_MAN باشد.

در کوئری بالا شرط این است که حرف اول نام باید A و SA_MAN شغل کارمند باشد، بنابراین از عملگر AND استفاده کرده ایم.

مثالفهرست تمامی کاربرانی را نشان دهید که ابتدای نام آنها A باشد یا شغل آنها SA_MAN باشد.

در کوئری بالا شرط این است که یا حرف اول نام باید A باشد یا SA_MAN شغل کارمند باشد، بنابراین از عملگر OR استفاده کرده ایم.

مثالفرض کنید جدولی به نام emp وجود دارد که در آن دو ستون به نام های dname که معرف نام دپارتمان کاری و loc معرف محل زندگی کارمند است. نام و حقوق تمام کارمندانی را پیدا کنید که در دپارتمان هایی کار می کنند که نام آنها با S خاتمه می یابد و محل زندگی آنها با K شروع می شود.

مثال – از جدول فرضی emp فهرست تمامی کارمندانی را پیدا کنید که آدرس email آنها جز دامنه gmail.com باشند.

مثالفرض کنید در جدول emp ستون age وجود دارد که مقدار عددی سن کاربران مثلا ۳۴ سال را نگه می دارد. کوئری بنویسید که افراد سنین ۳۰ سالگی مثلا ۳۰ یا ۳۵ سال را پیدا کند.

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

مثالفهرست تمامی کارمندانی را با شناسه های میان ۱۲۰ تا ۱۸۰ پیدا کنید که شغل آنها با SA شروع می شود.

تفسیر دستور بالا به این صورت است که می خواهیم هم نام شغل با SA شروع شود و هم می خواهیم یکی از کاربرانی باشد که شناسه آنها عددی در محدود ۱۲۰ تا ۱۸۰ باشد. بنابراین از عملگر AND استفاده کرده ایم.

مثالنام و نام خانوادگی و تاریخ تولد و شغل و حقوق تمامی کارمندهایی را پیدا کنید که نام آنها با K شروع می شود و همچنین میزان کمیسون آنها بالای 0.1 باشد.

مثالفهرست تمامی کاربرانی را بنویسید که نام خانوادگی آنها شامل حرف a و میزان حقوق سالیانه ها بیشتر از ۴۵۰۰۰ دلار باشد یا شغل آن یکی از شغل های MK_REP یا MK_MAN و دارای کمسیون باشد.

در مثال بالا چهار شرط وجود دارد که دو به دو با عملگر AND یک شرط می شوند و سپس توسط عملگر OR میان آنها، یکی از این شروط باید بر آورده شوند. بنابراین یا سطرهایی نشان داده می شوند که مربوط به کارمندانی هستند که درون نام خانوادگی آنها حرف a وجود دارد و حقوق آنها بیش از ۴۵۰۰۰ دلار است و یا اینکه شغل یکی از مشاغل MK_REP یا MK_MAN و دارای کمسیون نیز باشند. مثال زیر درخواست ها ما از کوئری بالا را به گونه دیگری تفسیر می کند و قاعدتا خروجی نیز متفاوت خواهد بود.

مثالفهرست تمامی کاربرانی را بنویسید که نام خانوادگی آنها شامل حرف a و میزان حقوق سالیانه ها بیشتر از ۴۵۰۰۰ دلار و دارای کمسیون باشند یا اینکه MK_MAN شغل آنها باشد.

بنابراین در کوئری بالا شرط اول این است که حرف a باید در نام خانوادگی کارمند باشد و حقوق آن بیش از ۴۵۰۰۰ دلار و دارای کمسیون باشد و یا اینکه کارمندانی باشند که شغل آنها MK_MAN باشد.