دستور case در sql

با نام و یاد خداوند. سلام خدمت کاربران گرامی
در جلسه قبل با دستور group by در sql آشنا شدیم.در این جلسه قصد داریم با دستور case در sql آشنا شویم .

در جدول Student مقادیر زیر را داشتیم :

select id,NameStudent,lastname,Age,Sex
from Student

خروجی جدول student:

اگر با دقت به جدول  نگاه کنید مشاهده می کنید که در ستون  sex  که مربوط به جنسیت می باشد اصلا مشخص نیست که منظور از این  0   و  1   چیست ؟درست است که ما در ذهن خودمان 1 را برای  مرد و 0 را برای جنسیت زن در نظر گرفته ایم. اما به غیر از خودمان هیچ کس متوجه نمی شود منظور ما از این ارقام چیست ؟

 برای اینکه شما خروجی ها را مفهومی تر و خواناتر بیان کنید از دستوری بنام دستور  case  می توان استفاده کرد .

بدین صورت که دستور case  را قبل از فیلدی که این حالات می خواهد برای آن اجرا شود قرار می دهیم .

select id,NameStudent,lastname,Age,case Sex
                                    when  1  then   ‘مرد’ 
                                    when  0  then   ‘زن’
                                    end                                                                 
from Student

خروجی دستور:

مشاهده می کنیم که به جای 1  و  0   مقادیر زن و مرد جایگزین شده است و همچنین نام ستون هم به  No column name تغییر کرده است پس در اینجا یک دگرگونی انجام می دهیم و نام ستون را انتخاب می کنیم .

select id,NameStudent,lastname,Age,case Sex
                                    when  1  then   ‘مرد’
                                    when  0  then   ‘زن’
                                    end as ‘جنسیت’
from Student

خروجی دستور:

اگر در اینجا مقادیر دیگری به جدولم اضافه کنم و جنسیت آن شخص  را مشخص نکنم . چه باید کرد ؟

شخص دیگری به نام همایون به جدولم اضافه می کنم اما جنسیت آن را مشخص نکردم .مشاهده می کنید که عبارت NULL نمایش داده شده است.

به جای جنسیت هایی که مشخص نشده است عبارت  تعیین نشده را نمایش دهد

select id,NameStudent,lastname,Age,case Sex
                                    when  1  then   ‘مرد’
                                    when  0  then   ‘زن’
                                    else نشده تعیین’
                                    end as ‘جنسیت’
from Student

خروجی دستور:

مشاهده می کنید که که به جای  NULL عبارت تعیین نشده جایگزین  شده است .

نکته : اگر به جای عبارت های زن ،مرد وتعیین نشده علامت ؟ قرار گرفت مطابق شکل زیر :

این مشکل به این دلیل است که شما در هنگام ایجاد دیتابیس خود زبان فارسی را انتخاب نکرده اید .

برای رفع این مشکل روی دیتابیس راست کلیک کرده و گزینه ی Properties  را انتخاب کنید .

پنجره ی Properties   Database  باز می شود  به تب Option رفته و در قسمت Collation  گزینه ی  Persian_100_CI_AI_KS_WS_SC را انتخاب می کنیم .

در این جلسه با دستور  case آشنا شدیم ، در جلسه بعد قصد داریم تا شما را با دستور join در SQL (پیوند دادن جداول ) آشنا کنیم .

 

با  آموزش مبانی SQL Server در خدمت شما هستیم. لطفا سوالات ، نظرات و پیشنهادات خود را در قسمت دیدگاه ها با ما در میان بگذارید.

به این مقاله چند تا ستاره میدی؟
[تعداد رای: 10 امتیاز: 4.8]