با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش SQLite را دنبال می کنند. در بخش قبلی با دستور شرطی LIKE در SQLite و کاربردهای آن آشنا شدیم، اگر به خاطر داشته باشید دستور LIKE با استفاده از الگویی که با کاراکترهایی مانند ‘%’ و ‘_’ در ساختار آن تعریف می کنیم مقادیر مورد نظر را در جداول دیتابیس برای ما پیدا می کند، ساختار و عملکرد عملگر GLOB در SQLite نیز بسیار شبیه به LIKE است، اما GLOB کاراکترهای متفاوتی را برای تعریف الگوی جستجو ارائه می دهد، همچنین GLOB بر خلاف LIKE نسبت به بزرگی و کوچکی حروف حساس است. در ادامه ی این مباحث برای آشنایی با عملگر GLOB در SQLite با ما همراه باشید.
در ادامه ی این آموزش شما را با سینتکس و مثال هایی از عملکرد عملگر GLOB در SQLite آشنا خواهیم کرد.
در عملگر GLOB از دو کاراکتر زیر برای تعریف الگوی جستجو استفاده می شود :
علامت ستاره (*) نشان دهنده هیچ یا چند عدد یا کاراکتر و علامت سوال (؟) نشان دهنده تعداد یک رقم و یا کاراکتر است.
این سینتکس حالات مختلف استفاده از * و ? در عملگر GLOB در SQLite است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SELECT FROM table_name WHERE column GLOB 'XXXX*' or SELECT FROM table_name WHERE column GLOB '*XXXX*' or SELECT FROM table_name WHERE column GLOB 'XXXX?' or SELECT FROM table_name WHERE column GLOB '?XXXX' or SELECT FROM table_name WHERE column GLOB '?XXXX?' or SELECT FROM table_name WHERE column GLOB '????' |
در این ساختار نیز شما می توانید N تعداد شرط را با استفاده از عملگرهای AND یا OR تعریف کنید.
کاراکترهای XXXX در ساختار فوق، می تواند هر مقدار عددی یا رشته ای باشند.
مثال
جدول زیر شامل تعدادی از مثال هایی است که دستور WHERE را به همراه نمونه های مختلفعملگر GLOB در SQLite با عملگرهای ‘*’ و ‘?’ را نشان می دهد:
ردیف | دستورات و توضیحات |
---|---|
۱ | WHERE SALARY GLOB ‘200*’ هر مقداری را که با ۲۰۰ شروع شده باشد را پیدا می کند. |
۲ | WHERE SALARY GLOB ‘*200*’ هر مقداری را که شامل ۲۰۰ باشد را پیدا می کند. |
۳ | WHERE SALARY GLOB ‘?00*’ هر مقداری را که شامل ۰۰ در مکان های دوم و سوم باشد را پیدا می کند. |
۴ | WHERE SALARY GLOB ‘2??’ هر مقداری را که با ۲ شروع شده و طول آن کمتر از ۳ کاراکتر باشد را پیدا می کند. |
۵ | WHERE SALARY GLOB ‘*2’ هر مقداری را که با ۲ تمام شده باشد را پیدا می کند. |
۶ | WHERE SALARY GLOB ‘?2*3’ هر مقدرای را که در مکان دوم آن ۲ بوده و با ۳ تمام می شود را پیدا می کند. |
۷ | WHERE SALARY GLOB ‘2???3’ هر مقدار ۵ رقمی را که با ۲ شروع شده و با ۳ تمام می شود را پیدا می کند. |
جدول COMPANY را با رکوردهای زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 9 | ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 |
مثال زیر تمام رکوردهایی را از جدول COMPANY برمی گرداند که فیلد AGE آنها با ۲ شروع شده باشد :
1 | sqlite> SELECT * FROM COMPANY WHERE AGE GLOB '2*'; |
نتایج کد فوق به صورت زیر خواهد بود :
1 2 3 4 5 6 7 8 | ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 |
مثال زیر تمام رکوردهایی را از جدول COMPANY برمی گرداند که فیلد ADDRESS آن ها شامل خط فاصله (-) در متن آن باشد :
1 | sqlite> SELECT * FROM COMPANY WHERE ADDRESS GLOB '*-*'; |
نتیجه ی اجرای کد فوق به صورت زیر خواهد بود :
1 2 3 4 | ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 6 Kim 22 South-Hall 45000.0 |
همانطور که در مباحث فوق نیز مشاهده کردید ، عملکرد عملگر GLOB در SQLite شباهت بسیار زیادی به عملگر LIKE در SQLite دارد، تنها تفاوت این دو عملگر پر کاربرد، در کاراکترهای تعریف الگوی آن ها و اینکه عملگر GLOB نسبت به بزرگی و کوچکی حروف حساس است، می باشد.