با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره آموزش کامل SQL را دنبال می کنند. در بخش قبلی که مباحث آموزش ما درباره ی آشنایی با عملگر LIKE در SQL ، بود. به دو کاراکتر پر کاربرد درصد(٪ ) و زیر خط کش( _ )، که در علمگر LIKE که برای مشخص کردن الگوی جستجو استفاده می شود نیز، اشاره کردیم. در بخش کاراکترهای Wildcard ( کاراکترهای جایگزین ) در SQL یا کاراکترهای جایگزین در SQL ، ما به بررسی بیشتر این کارکترها و کاربردهای آن،می پردازیم.
از یک کاراکتر Wildcard (واژهای) برای جایگزینی هر کاراکتر دیگری در یک رشته، استفاده می شود.
کارکترهای Wildcard در عملگر LIKE استفاده می شوند. عملگر LIKE نیز برای جستجوی مقادیری با الگوی خاص در دستور WHERE ، استفاده می شود.
در عملگر LIKE از دو کاراکتر برای مشخص کردن الگوی جستجو، استفاده می شود:
نکته: در بانک اطلاعاتی Access از (؟) به جای (_) استفاده می شود.
در بانک های اطلاعاتی Access و SQL Server می توانید از الگوهای زیر نیز، استفاده کنید:
همچنین کاراکتر درصد(٪ ) و زیر خط کش( _ ) نیز می توانند باهم ترکیب شوند.
در جدول زیر، مثال هایی از عمگر LIKE برای نشان دادن چگونگی استفاده از کارکترهای درصد(٪ ) و زیر خط کش( _ ) و توضیحات هر یک را، قرار داده ایم:
LIKE Operator | توضیحات |
---|---|
WHERE CustomerName LIKE 'a%' | تمام مقادیری که با حرف “a” شروع شده باشد را پیدا می کند. |
WHERE CustomerName LIKE '%a' | تمام مقادیری که با حرف “a” شروع شده باشد را پیدا می کند. |
WHERE CustomerName LIKE '%or%' | تمام مقادیری را که دارای حرف “or” باشند را پیدا می کند. |
WHERE CustomerName LIKE '_r%' | تمام مقادیری را که در کاراکتر دوم خود حرف “r” را داشته باشند را پیدا می کند. |
WHERE CustomerName LIKE 'a_%_%' | تمام مقادیری را که با حرف “a” شروع شده و طول آن کمتر از ۳ کارکتر باشد را پیدا می کند. |
WHERE ContactName LIKE 'a%o' | تمام مقادیری را که شروع آن با حرف “a” و پایان آن “o” باشد را پیدا می کند. |
جدول زیر ، بخشی از رکوردهای جدول “Customers” است. که ما در مثال های این آموزش، از آن استفاده خواهیم کرد:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
۱ | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | ۱۲۲۰۹ | Germany |
۲ | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | ۰۵۰۲۱ | Mexico |
۳ | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | ۰۵۰۲۳ | Mexico |
۴ | Around the Horn | Thomas Hardy | ۱۲۰ Hanover Sq. | London | WA1 1DP | UK |
۵ | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
مثال زیر تمام رکوردهای جدول customers که مقدار فیلد City آنها با حرف “ber” ، شروع شود را نمایش می دهد:
1 2 | SELECT * FROM Customers WHERE City LIKE 'ber%'; |
مثال زیر تمام رکوردهای جدول customers که مقدار فیلد City آنها شامل حروف “es” باشد را نمایش می دهد:
1 2 | SELECT * FROM Customers WHERE City LIKE '%es%'; |
مثال زیر تمام رکوردهای جدول customers که مقدار فیلد City آنها با هر کاراکتری شروع شده و ادامه ی آن با “erlin” تکمیل شده باشد را، نمایش می دهد:
1 2 | SELECT * FROM Customers WHERE City LIKE '_erlin'; |
تمام رکوردهای جدول customers که مقدار فیلد City آنها با حرف “L” شروع شده و دو کاراکتر بعد از آن حرف “n” و سپس دو کاراکتر بعد از آن حروف “on” باشد:
1 2 | SELECT * FROM Customers WHERE City LIKE 'L_n_on'; |
مثال زیر، تمام رکوردهای جدول customers که مقدار فیلد City آنها با حروف “b”, “s”, یا “p” شروع شده باشد را نمایش می دهد:
1 2 | SELECT * FROM Customers WHERE City LIKE '[bsp]%'; |
مثال زیر، تمام رکوردهای جدول customers که مقدار فیلد City آنها با حروف “a”, “b”, یا “c” شروع شده باشد، را نمایش می دهد:
1 2 | SELECT * FROM Customers WHERE City LIKE '[a-c]%'; |
مثال زیر، تمام رکوردهای جدول customers که مقدار فیلد City آنها با حروف “b”, “s”, یا “p” شروع نشده باشد را نمایش می دهد:
1 2 | SELECT * FROM Customers WHERE City LIKE '[!bsp]%'; |
کد بالا را به صورت زیر نیز می توان استفاده کرد:
1 2 | SELECT * FROM Customers WHERE City NOT LIKE '[bsp]%'; |
در این بخش ما در واقع ساختار دستور LIKE را که در بخش قبل با آن آشنا شدید را تکمیل کردیم. با مباحثی که در بخش قبل و در این بخش آموختید، تقریبا می توانید هر نوع جستجویی را در داده های بانک اطلاعاتی انجام دهید. امیدواریم که آموزش آشنایی با کاراکترهای Wildcard یا واژه ای در SQL مورد توجه دوستان قرار گرفته باشد.