×

ترتیب ارزیابی اپراتور های منطقی در SQL Server

فصل شانزدهم :

ترتیب ارزیابی اپراتور های منطقی

اگر در عبارت Where چندین اپراتور منطقی داشتیم ترتیب ارزیابی اپراتور ها بشکل ذیل است
ابتدا NOT بعد AND و بعد OR
به مثال ذیل توجه کنید :
لیست دانش اموزان با نام محمد و سن 11 یا 12 سال :
select * from [dbo].[Student] where age=11 or age=12 and FirstName=N'محمد'
می بینیم که دانش اموز با کد 3 یعنی عباس رحمانی نیز جزو لیست است.چون در select بالا ابتدا and مورد ارزیابی قرار میگیرد یعنی کسانی که نتام محمد دارند و سن 12 سال ، سپس این عبارت با عبارت اول یعنی age=1 ارزیابی میشود .پس می بینیم که عباس رحمانی بدلیل سن 11 سال جزو لیست است و نتایج select ما صحیح نیست
برای عوض کردن ترتیب ارزیابی اپراتور ها از پرانتز استفاده میکنیم اس کیوال ابتدا داخل پرانتز را ارزیابی می کند.
حال با استفاده از پرانتز select بالا را اصلاح میکنیم .
select * from [dbo].[Student] where (age=11 or age=12) and FirstName=N'محمد'
ابتدا داخل پرانتز مورد ارزیابی قرار میگیرد و سپس با شرط سوم که بررسی نام را انجام میدهد مقایسه صورت میگیرد. اینبار نتیجه صحیح است .

لیست دانش اموزان با سن 11 یا 12 سال که اسم آنها محمد نیست :
select * from [dbo].[Student] where (age=11 or age=12) and FirstName <> N'محمد'
لیست دانش اموزان با سن 11 یا 12 سال که اسم آنها محمد یا عباس نیست :
select * from [dbo].[Student] where (age=11 or age=12) and FirstName Not in ( N'محمد',N'عباس')



مفاهیم و موضوعات این فصل عبارتند از :

  • ترتیب ارزیابی اپراتور های منطقی

vatantop
نظرات و سوالات درج سوال/ نظر