📞 02166056460

علامت های شرطی در Like

5 / 10
از 5 کاربر
بازگشت به لیست مقالات » | یکشنبه 19 مهر 1405 در ساعت 11 و 30 دقیقه | نظرات کاربران ( 2 )

علامت های شرطی در LIKE و کاربرد آن ها در SQL

💡آشنایی با جستجوی الگویی

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

🔎یادآوری دستور LIKE

دستور LIKE در SQL برای بررسی تطابق یک ستون متنی با یک الگو استفاده می شود. همان طور که در مقاله قبلی درباره دستور LIKE توضیح داده شد، وقتی بخشی از رشته یا شکل کلی آن برای ما مهم است، می توانیم از LIKE در شرط WHERE استفاده کنیم. این دستور در بسیاری از موارد جایگزین عملگر = می شود؛ با این تفاوت که امکان استفاده از نویسه های جایگزین را نیز فراهم می کند.

📘نقش نویسه های جایگزین

در الگوهای LIKE دو نویسه پرکاربرد وجود دارد: علامت % که با صفر، یک یا چند کاراکتر تطبیق می کند و علامت _ که فقط با یک کاراکتر تطبیق دارد. ترکیب این دو نشانه با متن معمولی، جستجو را انعطاف پذیر می کند. در آموزش SQL، یادگیری درست این الگوها برای جستجوی داده های متنی اهمیت زیادی دارد.

معنی علامت های % و _ در الگوی LIKE

✅درصد؛ تطبیق با چند کاراکتر

علامت درصد یا % می تواند با هر تعداد کاراکتر تطبیق پیدا کند؛ حتی اگر تعداد کاراکترها صفر باشد. بنابراین قرار دادن آن در ابتدای الگو، انتهای الگو یا هر دو طرف متن، نوع نتیجه را تغییر می دهد. برای نمونه، الگوی 'A%' مقادیری را پیدا می کند که با A آغاز شده اند، در حالی که '%A' مقادیری را برمی گرداند که به A ختم می شوند.

✅زیرخط؛ تطبیق با یک کاراکتر

علامت زیرخط یا _ تنها با یک کاراکتر تطبیق دارد. این کاراکتر می تواند حرف، عدد یا نویسه دیگری باشد که در مقدار ذخیره شده است. اگر بخواهیم نام هایی با طول مشخص را پیدا کنیم، زیرخط به ما کمک می کند جایگاه های نامعلوم را بشماریم. برای مثال، الگوی 'A__' با رشته هایی تطبیق دارد که با A شروع می شوند و پس از آن دقیقا دو کاراکتر دارند.

نویسه معنی نمونه الگو کاربرد نمونه
% صفر یا چند کاراکتر 'Main%' مقدارهایی که با Main شروع می شوند
_ دقیقا یک کاراکتر 'A_' مقدارهایی که با A و یک کاراکتر دیگر ساخته شده اند
% و _ ترکیب چند کاراکتر و یک کاراکتر '%Main_' متنی که پیش از Main هر طولی دارد و پس از آن یک کاراکتر می آید

مثال کاربردی علامت های شرطی در LIKE

⚠️خواندن شرط نمونه

فرض کنید می خواهیم نام مشتریانی را پیدا کنیم که آدرس خیابان آن ها شامل واژه Main است و پس از این واژه دقیقا یک کاراکتر دیگر وجود دارد. پیش از Main ممکن است صفر یا چند کاراکتر قرار بگیرد. برای ساخت این شرط، قبل از Main از درصد و پس از آن از زیرخط استفاده می کنیم.

SELECT customer_name
FROM customer
WHERE customer_street LIKE '%Main_';
🧭اجزای پرس و جو

در این پرس و جو، عبارت SELECT customer_name مشخص می کند که نام مشتریان نمایش داده شود. بخش FROM customer جدول مورد جستجو را تعیین می کند و شرط WHERE مقدار ستون customer_street را با الگوی داده شده می سنجد. ترکیب '%Main_' یعنی هر تعداد کاراکتر پیش از Main قابل قبول است، اما پس از Main باید دقیقا یک کاراکتر وجود داشته باشد.

📝نمونه های قابل تطبیق

با این الگو، مقداری مانند 12 MainA می تواند با شرط تطبیق داشته باشد، چون قبل از Main چند کاراکتر وجود دارد و پس از آن یک کاراکتر آمده است. مقدار Main7 نیز ممکن است تطبیق داشته باشد؛ درصد می تواند با صفر کاراکتر هم منطبق شود. اما Main به تنهایی تطبیق ندارد، چون پس از واژه Main هیچ کاراکتری وجود ندارد. همچنین مقداری مانند MainAB با الگوی مورد نظر منطبق نیست، زیرا پس از Main دو کاراکتر آمده است.

الگوهای پرکاربرد برای جستجوی متن

هدف جستجو الگو توضیح
شروع مقدار با عبارت مشخص 'Main%' پس از Main هر تعداد کاراکتر می تواند بیاید.
پایان مقدار با عبارت مشخص '%Street' پیش از Street هر تعداد کاراکتر مجاز است.
وجود عبارت در هر جای مقدار '%Main%' عبارت Main می تواند در ابتدا، میانه یا انتهای مقدار باشد.
تطبیق با طول مشخص '____' چهار زیرخط یعنی دقیقا چهار کاراکتر.

۵ نکته مهم برای استفاده از LIKE

۱

جایگاه درصد را با دقت انتخاب کنید. قرار گرفتن % در ابتدای الگو، پایان الگو یا دو سوی عبارت، دامنه نتیجه ها را تغییر می دهد. اگر فقط به دنبال مقادیری هستید که با یک واژه شروع می شوند، درصد را در انتهای آن قرار دهید؛ برای جستجوی واژه در هر نقطه از رشته، از دو درصد استفاده کنید.

۲

تعداد زیرخط ها را بشمارید. هر زیرخط یک کاراکتر را نمایش می دهد. پس اگر طول بخش ناشناخته برای شما اهمیت دارد، تعداد زیرخط ها باید با تعداد جایگاه های مورد نظر برابر باشد. یک زیرخط اضافه یا کم می تواند باعث حذف نتیجه درست یا نمایش نتیجه نامرتبط شود.

۳

به حساسیت حروف توجه کنید. حساس یا غیر حساس بودن LIKE به حروف بزرگ و کوچک به نوع پایگاه داده، تنظیمات مرتب سازی یا collation وابسته است. در بعضی سامانه ها Main و main یکسان در نظر گرفته می شوند و در برخی دیگر ممکن است نتیجه متفاوت باشد. بهتر است رفتار پایگاه داده خود را با چند داده آزمایشی بررسی کنید.

۴

از الگوی بیش از اندازه کلی پرهیز کنید. الگویی مانند '%a%' ممکن است بخش بزرگی از رکوردها را بررسی کند و در جدول های بزرگ کند باشد. اگر امکان دارد، الگو را محدودتر بنویسید یا از جستجوی دقیق تر، ایندکس مناسب و روش های متناسب با پایگاه داده استفاده کنید.

۵

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

مزایا و محدودیت های جستجو با LIKE

🌱مزیت ها

مهم ترین مزیت LIKE سادگی و خوانایی آن است. بدون نیاز به نوشتن الگوریتم پیچیده می توان جستجوی ابتدایی، انتهایی یا شامل یک عبارت را انجام داد. ترکیب درصد و زیرخط نیز امکان تعریف الگوهایی با طول متغیر یا ثابت را فراهم می کند. این ویژگی برای فیلتر کردن نام، نشانی، کدهای متنی و توضیحات در یک جدول کاربردی است.

🚩محدودیت ها

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

اشتباه های رایج در استفاده از علامت های LIKE

⚠️اشتباه در تعداد کاراکترها

یکی از خطاهای معمول این است که زیرخط را مانند درصد در نظر بگیریم. زیرخط یک کاراکتر را جایگزین می کند، اما درصد تعداد نامشخصی از کاراکترها را می پذیرد. اگر الگوی 'A_' نوشته شود، مقدار A به تنهایی با آن تطبیق ندارد و مقدارهایی با بیش از یک کاراکتر نیز فقط زمانی پذیرفته می شوند که طول کامل آن ها با الگو سازگار باشد.

⚠️قرار دادن شرط در ستون نامناسب

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

🛡️ساخت امن شرط ها

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

نکته های تکمیلی درباره الگوها و نویسه های خاص

✨جستجوی خود علامت درصد یا زیرخط

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

🌐زبان، collation و داده های فارسی

در جستجوی داده های فارسی، یکسان نبودن شکل نویسه ها، فاصله ها و تنظیمات مرتب سازی می تواند بر نتیجه اثر بگذارد. برای نمونه، ممکن است شکل های متفاوت یک حرف یا وجود فاصله اضافی باعث شود رشته ای که از نظر کاربر مشابه است در مقایسه متنی یکسان شناخته نشود. برای جستجوی قابل پیش بینی، داده ها را تا حد نیاز یکدست سازی کنید و تنظیمات collation و قواعد مقایسه متن در پایگاه داده را بشناسید.

چه زمانی LIKE انتخاب مناسبی است؟

🎯انتخاب ابزار متناسب با نیاز

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

💻کاربرد در برنامه ها و کسب و کارها

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

جمع بندی علامت های شرطی در LIKE

⭐خلاصه کاربردی

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

سوالات متداول علامت های شرطی در LIKE

علامت درصد در دستور LIKE چه معنایی دارد؟

علامت درصد با صفر، یک یا چند کاراکتر تطبیق پیدا می کند. برای مثال، الگوی 'Main%' مقادیری را پیدا می کند که با Main شروع شده اند.

تفاوت علامت % و _ در SQL چیست؟

علامت % تعداد نامشخصی از کاراکترها را می پذیرد، اما علامت _ دقیقا با یک کاراکتر تطبیق دارد.

الگوی '%Main_' چه مقادیری را پیدا می کند؟

این الگو مقادیری را پیدا می کند که پیش از Main هر تعداد کاراکتر دارند و پس از Main دقیقا یک کاراکتر آمده است.

آیا LIKE به حروف بزرگ و کوچک حساس است؟

حساسیت به حروف بزرگ و کوچک به نوع پایگاه داده و تنظیمات collation بستگی دارد. رفتار آن را در سامانه مورد استفاده خود بررسی کنید.

آیا استفاده از LIKE روی سرعت جستجو اثر می گذارد؟

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

ارسال نظر و نظرات ثبت شده
:
8 0
خیییییییییییییییلی این راهنماییتون کمک کرد ممنونم
sql :
6 2
سلام چه طوری میشه یه پارامتر رو در عملگر like استفاده کرد(در یک پروسیجر). مثلا در مثال بالا به جای main پارامتر باشه تا از یه برنامه به اون مقدار بفرستی؟
مدیریت : فقط کافیه یک پارامتر کاراکتری رو بفرستید. و از کاراکتر های % و _ در این رشته استفاده نمایید.
سایر مقالات
دستور ISNULL در اس کیو ال آموزش SQL دستور ISNULL در SQL؛ آموزش کاربرد، تفاوت‌ها و مثال‌ها یاد بگیرید مقدار ...
مقدار Null در اس کیو ال آموزش پایگاه داده مقدار Null در SQL چیست و چگونه از آن استفاده کنیم؟ تفاوت مقدار تهی با رش ...
دستور SELECT INTO در sql آموزش SQL دستور SELECT INTO در SQL؛ آموزش ساخت جدول و نسخه پشتیبان یاد بگیرید چطور داده ها ...
عملگر UNION در اسکیوال آموزش SQL دستور UNION در SQL؛ راهنمای ترکیب نتایج جداول نحوه استفاده از UNION و UNION ALL ...
دستور FULL JOIN در sql آموزش SQL دستور FULL JOIN در SQL؛ آموزش کامل با مثال ترکیب همه سطرهای دو جدول، حتی وقتی بر ...
دستور RIGHT JOIN در sql راهنمای SQL دستور RIGHT JOIN در SQL؛ آموزش، مثال و کاربردها نحوه نمایش همه رکوردهای جدول س ...
دستور LEFT JOIN در sql آموزش SQL دستور LEFT JOIN در SQL؛ آموزش کاربرد و مثال با حفظ همه رکوردهای جدول سمت چپ، داد ...
دستور INNER JOIN در sql آموزش SQL دستور INNER JOIN در SQL؛ آموزش کاربرد و مثال یاد بگیرید چگونه داده‌های مرتب ...
دستورات پیوند و Join در SQL آموزش پایگاه داده SQL JOIN چیست؟ راهنمای تفاوت انواع دستورهای پیوند آشنایی با INNER JOIN، ...
Alias در اس کیو ال آموزش SQL Alias در SQL چیست و چگونه از آن استفاده کنیم؟ راهنمای نام گذاری موقت ستون ها و ج ...
عملگر BETWEEN در شرطهای sql آموزش SQL عملگر BETWEEN در SQL؛ آموزش استفاده از بازه ها کاربرد، ساختار، مثال ها و نکات مه ...
عملگر In در شرط های sql آموزش SQL عملگر IN در SQL چیست و چگونه از آن استفاده کنیم؟ راهنمای کاربردی بررسی چند مقدار ...
علامت های شرطی در Like علامت های شرطی در LIKE و کاربرد آن ها در SQL 💡آشنایی با جستجوی الگویی هنگام جستجو در پایگ ...
عملگر Like در SQL عملگر LIKE در SQL چیست و چه کاربردی دارد؟ 🔎جست وجوی الگو در داده ها عملگر LIKE در SQL برا ...
دستور شرطی Top در SQL دستور TOP در SQL چیست و چه کاربردی دارد؟ 💡آشنایی با محدود کردن خروجی دستور TOP در SQL برای ...
دسته بندی
جستجو
⏳ در حال پردازش...
لطفا صبر کنید