مقدمه (Introduction)
مانند بسیاری از زبانهای برنامهنویسی، SQL نیز امکان استفاده از Wildcardها (کاراکترهای جانشین) را فراهم میکند. Wildcardها کاراکترهای خاصی هستند که میتوانند نمایندهی یک یا چند کاراکتر یا مقدار دیگر باشند.
این قابلیت در SQL بسیار کاربردی است، زیرا به شما اجازه میدهد بدون دانستن مقدار دقیق دادهها، در پایگاه داده جستجو انجام دهید.
در این راهنما یاد میگیرید که چگونه با استفاده از Wildcardهای تعریفشده در SQL دادهها را Query کنید.
پیشنیازها (Prerequisites)
برای دنبال کردن این راهنما به موارد زیر نیاز دارید:
-
یک سیستم دارای Relational Database Management System (RDBMS) که از SQL پشتیبانی کند
نمونهها و دستورات این آموزش در محیط زیر بررسی شدهاند:
-
سرور Ubuntu 20.04 با کاربر non-root دارای دسترسی مدیریتی و فایروال UFW
-
MySQL نصب و ایمنسازیشده روی سرور
-
یک کاربر non-root در MySQL
نکته: هر RDBMS پیادهسازی مخصوص خود را از SQL دارد. اگرچه دستورات این آموزش در اکثر دیتابیسها کار میکنند، اما ممکن است سینتکس یا خروجی آنها در سیستمهایی غیر از MySQL کمی متفاوت باشد.
همچنین به یک دیتابیس و جدول نمونه دارای داده نیاز دارید تا بتوانید Wildcardها را تمرین کنید.
اتصال به MySQL و ساخت دیتابیس نمونه
اگر دیتابیس شما روی سرور راه دور قرار دارد، ابتدا از طریق SSH وارد سرور شوید:
سپس وارد محیط MySQL شوید:
ایجاد دیتابیس:
در صورت موفقیت، خروجی مشابه زیر نمایش داده میشود:
انتخاب دیتابیس:
ساخت جدول نمونه
در این مثال جدولی به نام user_profiles میسازیم که اطلاعات کاربران یک اپلیکیشن را ذخیره میکند.
ستونها:
-
user_id: شناسه یکتا (Primary Key) -
name: نام کاربر -
email: ایمیل کاربر -
birthdate: تاریخ تولد -
quote: نقلقول مورد علاقهی کاربر
وارد کردن دادههای نمونه
اکنون آمادهی یادگیری استفاده از Wildcardها هستید.
جستجوی داده با Wildcard در SQL
در SQL تنها دو Wildcard اصلی وجود دارد:
-
_: نمایشدهندهی یک کاراکتر-
مثال:
s_mmy→ sammy، sbmmy، sxmmy
-
-
%: نمایشدهندهی صفر یا چند کاراکتر-
مثال:
s%mmy→ sammy، smmy، saaaaaammy
-
این Wildcardها فقط در بخش WHERE و همراه با LIKE یا NOT LIKE استفاده میشوند.
مثال: جستجوی نامهای سهحرفی که به im ختم میشوند
نتیجه:
Kim و Jim
علامت
*در SELECT به معنی «تمام ستونها» است و Wildcard محسوب نمیشود.
استفاده از NOT LIKE
این دستور تمام رکوردهایی را نمایش میدهد که الگوی مشخصشده را ندارند.
استفاده از % برای جستجوی پیشوند
تمام نامهایی که با حرف I شروع میشوند برگردانده میشوند.
در MySQL،
LIKEبهصورت پیشفرض حساس به حروف بزرگ و کوچک نیست.
Escape کردن Wildcardها
گاهی لازم است خود کاراکترهای % یا _ را جستجو کنید. در این حالت باید از Escape Character استفاده کنید.
مثال نادرست:
این Query تمام رکوردها را برمیگرداند.
Escape کردن علامت %
این دستور فقط رکوردهایی را نمایش میدهد که در متن آنها علامت % وجود دارد.
تعریف Escape سفارشی با ESCAPE
در اینجا @ بهعنوان Escape Character تعریف شده و Query ایمیلهایی را که دارای _ هستند برمیگرداند.
جمعبندی (Conclusion)
در این راهنما یاد گرفتید:
-
Wildcard در SQL چیست
-
تفاوت
%و_ -
استفاده از
LIKEوNOT LIKE -
Escape کردن Wildcardها
-
تعریف Escape سفارشی با
ESCAPE
دستورات ارائهشده در اکثر دیتابیسهای SQL قابل استفاده هستند، اما برای جزئیات دقیقتر بهتر است مستندات رسمی DBMS خود را بررسی کنید.
از همراهی شما با پارمین کلود متشکریم.
نظرات کاربران