خوش آموز اولین و تنها سایت آموزشی %100 رایگان ایران با بیش از هزاران مقالۀ آموزشی

12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

کد مطلب : 350 PDF

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

نحوه استفاده از دستور WHERE


اول بیاییم با یک مثال کاربردی شروع کنیم. وارد محیط اس کیو ال سرور شوید و دیتابیس PhoneBookDB را انتخاب کنید. سپس یک Query جدید را ایجاد کنید. حالا دستور زیر را مشابه تصویر زیر وارد کنید و آن را اجرا نمایید.


SELECT * FROM PhoneBook
WHERE RowID = 1


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

همانطور که می بینید، علیرغم اینکه در جدول ما رکوردهای دیگری هم بودند اما فقط یکی از آنها نمایش داده شد. دستور WHERE به ما کمک کرد تا داده های خروجی را محدود کنیم. به شرط (RowID = 1) که بعد از دستور WHERE آمده است دقت کنید. معنای این دستور در حالت کلی این می شود :

کلیه فیلدهای جدول PhoneBook را به من نشان بده و فقط ردیفهایی را به من نشان بده که مقدار فیلد RowID آنها برابر 1 باشد. طبیعتا چون فقط یک رکورد از رکوردهای جدول ما دارای چنین شرایطی می باشد، اس کیو ال سرور هم فقط همان یک رکورد را به ما نشان داد.

حالا دستور را به شکل زیر تغییر بدهید و آن را اجرا کنید:


SELECT * FROM PhoneBook
WHERE RowID > 1


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

اینبار ما شرط را به این شکل نوشتیم که رکوردهایی را به من نشان بده که مقدار فیلد RowID آنها بزرگتر از 1 باشد. اس کیو ال سرور هم بعد از پردازش و اجرای دستور ما دو رکورد را پیدا کرد و آنها را به ما نشان داد.

حالا شرط به شکل زیر تغییر بدهید و مجددا دستور را اجرا کنید :


SELECT * FROM PhoneBook
WHERE RowID < 1


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

اینبار ما از اس کیو ال سرور خواستیم تا رکوردهایی را که مقدار فیلد RowID آنها کوچکتر از 1 است را به ما نشان بدهد. اس کیو ال سرور هم دستور ما را پردازش کرد و متوجه شد که هیچ رکوردی که فیلد RowID آن کوچکتر از 1 باشد وجود ندارد و طبیعتا در خروجی دستور هیچ اطلاعاتی را به ما نشان نداد.

نحوه شرط گذاشتن روی مقادیر متنی در اس کیو ال سرور


شرطهایی که در بالا نوشتیم، در مورد فیلدهای عددی کاربرد داشتند. اما اگر فیلد ما متنی باشد چطور؟ آیا بازهم می توانیم از دستورات بالا استفاده کنیم؟
پاسخ بله است. اما نحوه نوشتن آن اندکی متفاوت است. در هنگام شرط گذاشتن روی فیلدهای متنی ما باید مقدار مورد جستجو را بین دو علامت تک کوتیشن (') قرار دهیم. به مثال زیر توجه کنید و آن را بنویسید و اجرا کنید :


SELECT * FROM PhoneBook
WHERE FirstName = N'محمد'


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

در این دستور ما از اس کیو ال سرور خواستیم تا رکوردهایی را به ما نشان بدهد که مقدار فیلد FirstName آن برابر "محمد" باشد. دقت کنید که چگونه کلمه "محمد" را داخل یک جفت تک کوتیشن (') قرار داده ایم. همینطور به حرف N که قبل از آن قرار داده ایم نیز دقت کنید.

نکته مهم : حرف N که در اینجا از آن استفاده کرده ایم به این دلیل است که نوع داده فیلد ما nvarchar است و از نوع یونیکد می باشد. در مورد یونیکد در آموزشهای قبلی کمی توضیح دادیم. بطور کل زمانی که می خواهیم حروف غیر انگلیسی مانند فارسی، عربی، چینی، و ... را در فیلدی ذخیره کنیم بهتر است تا از یونیکد استفاده کنیم.

استفاده از شرط LIKE به جای شرط = در مقادیر متنی


وقتی بر روی فیلدهایی که نوع داده متنی دارند، شرط قرار می دهیم بهتر است تا بجای علامت = از شرط LIKE استفاده کنیم. شرط LIKE مخصوص داده های متنی می باشد و امکاناتی که در اختیار ما قرار می دهد بسیار وسیع تر است. برای درک بهتر دستور LIKE مثال زیر را بنویسید و اجرا کنید :


SELECT * FROM PhoneBook
WHERE FirstName LIKE N'محمد'


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

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

ترکیب دستور LIKE با کاراکتر % و قدرت مانور بالای آن


دستور زیر را بنویسید و اجرا کنید :


SELECT * FROM PhoneBook
WHERE FirstName LIKE N'م%'


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

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

حالا دستور را اندکی تغییر می دهیم. دستور زیر را بنویسید و اجرا کنید :


SELECT * FROM PhoneBook
WHERE FirstName LIKE N'مح%'


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

در اینجا از اس کیو ال سرور خواستیم تا کلیه رکوردهایی که فیلد "نام" آنها با عبارت "مح" شروع می شود را به ما نشان بدهد و طبیعتا هر دو نام "محمد" و "محمود" با عبارت "مح" شروع می شوند.

حالا دستور زیر را بنویسید و اجرا کنید :


SELECT * FROM PhoneBook
WHERE FirstName LIKE N'%د'


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

اینبار از اس کیو ال سرور خواستیم تا رکوردهایی را به ما نشان بدهد که در فیلد "نام" آنها حرف "د" بکار رفته باشد. دقت کنید که کاراکتر درصد (%) را اینبار در ابتدای قسمت شرط قرار داده ایم.

حالا دستور زیر را بنویسید و اجرا کنید :


SELECT * FROM PhoneBook
WHERE FirstName LIKE N'%حم%'


12. آموزش SQL Server به زبان ساده. محدود کردن داده ها با دستور WHERE

اینبار از اس کیو ال سرور خواستیم تا رکوردهایی را به ما نشان بدهد که در یک قسمتی از فیلد "نام" آن (تفاوتی نمیکند در کدام قسمتش، ابتدا، وسط و یا انتها) عبارت "حم" بکار رفته باشد. دقت کنید که در این مثال ما از دو کاراکتر درصد (%) در که یکی در ابتدای شرط و دیگری در انتهای شرط قرار داده شده است، استفاده کردیم.


آموزش قبلی : 11. آموزش SQL Server به زبان ساده. بازیابی اطلاعات جداول با استفاده از دستور SELECT

آموزش بعدی : 13. آموزش SQL Server به زبان ساده. استفاده از عملگرهای AND و OR



نویسنده : امیر انصاری

دیدگاه ها(0)

دیدگاه خود را ثبت کنید:


آموزش پایگاه داده اس کیو ال سرور به زبان ساده از مبتدی تا پیشرفته بصورت کاملا کاربردی

آموزش پایگاه داده اس کیو ال سرور به زبان ساده از مبتدی تا پیشرفته بصورت کاملا کاربردی