فصل شانزدهم :
اپراتور GLOB در SQLite
این اپراتور برای مقایسه رشته های متنی با یک الگو بکار میرود اگر رشته ما با الگو مطابقت داشت نتیجه اپراتور GLOB برابر با true خواهد بود و در غیر اینصورت false . بر خلاف اپراتور LIKE این اپراتور به حروف کوچک و بزرگ حساس است (case sensitive)
و از الگوی unix ی پیروی میکند برای ساخت الگو های مقایسه دراین اپراتور از دو کاراکتر
The asterisk sign (*)
The question mark (?)
استفاده میشود که "*" معرف صفر ، یا چند عدد و یا کاراکتر و "؟" معرف تنها یک عدد یا کاراکتر است.
مثالهای ذیل را ببینید :
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 '????'
که در مثالهای بالا XXXX می تواند هر مقدار عددی و یا کاراکتری باشد .
به مثالهای ذیل توجه کنید:
توضیح
|
عبارت
|
تمامی مقادیری را بیاب که با 200 شروع شوند
|
WHERE SALARY GLOB '200*'
|
تمامی مقادیری را بیاب که دارای 200 در هر موقعیتی باشند
|
WHERE SALARY GLOB '*200*'
|
تمامی مقادیری را بیاب که دارای 00 در موقعیت دوم و سوم باشند
|
WHERE SALARY GLOB '?00*'
|
تمامی مقادیری را بیاب که با 2 شروع شوند و حد اقل دارای طول 3 کاراکتر باشند
|
WHERE SALARY GLOB '2??'
|
تمامی مقادیری را بیاب که با 2 پایان یابند
|
WHERE SALARY GLOB '*2'
|
تمامی مقادیری را بیاب که دارای 2 در موقعیت دوم بوده و با 3 پایان یابند
|
WHERE SALARY GLOB '?2*3'
|
تمامی مقادیر با طول 5 را بیاب که دارای 2 در موقعیت اول بوده و با 3 پایان یابند
|
WHERE SALARY GLOB '2???3'
|
حالا دوباره برگردیم به جدول COMPANY
sqlite> SELECT * FROM COMPANY WHERE AGE GLOB '2*';
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
که نتیجه مطابق با بالا ، تمامی رکورد هایست که فیلد AGE آنها با 2 شروع میشوند
sqlite> SELECT * FROM COMPANY WHERE ADDRESS GLOB '*-*';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
6 Kim 22 South-Hall 45000.0
sqlite> SELECT * FROM COMPANY WHERE ADDRESS GLOB '*-*';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
6 Kim 22 South-Hall 45000.0
تمامی رکورد هایی که در فیلد Address دارای "-" هستند.
مفاهیم و موضوعات این فصل عبارتند از :