استفاده از عملگرهای ریاضی در عبارت WHERE

همانطور که در مثال هایی پیشرو خواهید دید، می توانیم از عملگرهای ریاضی بزرگتر، مساوی و کوچکتر و یا نا برابری برای شرط های جلوی WHERE استفاده کنیم. به طور مثال فرض کنید جدولی دریک که فهرست محصول ها و اطلاعات آنها را نگهداری می کند. در این جدول ستون price قیمت محصولات را نگه می دارد. نام محصول و کمپانی و قیمت تمامی محصولاتی که بیشتر از ۳۰۰۰۰ تومان هستند را نمایش دهید.

مثالنام خانوادگی، حقوق و دپارتمان تمامی کارمندانی را نشان دهید که میزان حقوق آنها برابر با شناسه عددی آنها باشد.

دستور بالا معنی خاصی ندارد ولی می خواهیم نشان دهیم که می توانیم در جلوی عبارت WHERE دو ستون عددی را با یکدیگر مقایسه کنیم که در مثال بالا این دو ستون، ستون های salary و department_id نام دارند که هر دو عددی هستند.

مثالنام و نام خانوادگی و آدرس ایمیل کارمندی را نشان دهید که شناسه عددی آن برابر با ۱۲۲ باشد. همچنین از نام مستعار برای ترکیب ستون های first_name و last_name استفاده کنید.

همانطور که در دستور بالا می بینید مقدار دو ستون last_name و first_name را به یکدیگر الحاق کرده ایم که میان مقادیر آنها یک عللامت – قرار می گیرد. همچنین توسط عبارت AS یک نام مستعار به این الحاق انتساب داده ایم. نهایتا در شرط جلوی عبارت WHERE مقدار عدد ۱۲۲ را میان دو Single Quotation قرار داده ایم که اگر قرار هم نمی دادیم، چون مقدار شرط عددی است، باز هم مشکلی پیش نمی آمد.

مثالتعداد کارمندانی را نشان دهید که حقوق آنها بیش از ۱۰۰۰۰ باشد.

مثالنام و نام خانوادگی و شغل و حقوق تمامی کارمندان به جز کارمند با شناسه عدد ۱۲۲ را نشان دهید.

بنابراین علامت = برای  برابری و هر دو علامت =! و <> برای نا برابری استفاده می شوند. در یکی از دو کوئری بالا از علامت =! و در دیگری از علامت <> استفاده شده است.  بنابراین ملاحضه می کنید که می توانیم از انواع عددی و کاراکتری (رشته) و عملگرهای مختلف در محدود سازی سطر یا سطرهای خروجی استفاده کنیم. عملگر = برای بررسی برابری، عملگرهای != یا <> برای نابرابری، عملگرهای < و <= به ترتیب برای کوچگتر و کوچگتر مساوی و در نهایت عملگرهای > و >= برای بزرگتر و بزرگتر مساوی استفاده می شوند.

بنابراین در دستورهای بالا از عملگر != یا <> استفاده کردیم تا تمامی سطرهایی (کارمندانی) را نشان دهیم که شناسه آنها، عدد ۱۲۲ نباشد. یعنی تمامی کارمندهایی که شناسه عددی آنها برابر با عدد ۱۲۲ نباشد. در جدول hr.employees ستون emploee_id کلید اصلی در جدول است و به همین دلیل مقدار تکراری درون این ستون وجود ندارد، پس تنها یک سطر وجود دارد که مقدار ستون employee_id آن برابر با عدد ۱۲۲ است.

مثالنام و نام خانوادگی، جمع حقوق و مقدار کمسیون سالیانه تمامی کامندانی را نشان دهید که شناسه عدد آنها بزرگتر یا مساوی عدد ۱۲۲ باشد.

توجه کنید تابع ()NVL به معنی Not Value است و برای ستون هایی استفاده می شود که مقدار NULL دارند. در مثال بالا توسط تابع NVL مقادیر NULL در ستون commission_pct به عدد صفر تبدیل می شوند و سپس با مقدار ستون salary جمع می شوند و در نهایت در عدد ۱۲ ماه ضرب می شوند. توجه کنید که مقدار NULL به معنی عدم وجود مقدار مناسب برای آن ستون در یک سطر است و چون می خواهیم عدد ۱۲ را در مقدار ستون commission_pct ضرب کنیم و چون ضرب یا جمع یا تفریق یا تقسیم عدد در مقدار NULL به معنی است، پس مقادیر NULL را به صفر تبدیل می کنیم.

برای دیدن ساختار جدول و پیدا کردن نوع ستون یا Nullable بودن یا نبودن آن باید از دستور DESC یا DESCRIBE استفاده شود.

عدد صفر در عملیات ضرب عامل خنثی است، پس چون مقدار ستون commission_pct را در عدد ۱۳ ضرب کردیم و چون سطرهایی که ستون commission_pct آنها NULL است، پس قاعدتا نباید در نتیجه نهایی دخیل باشند، پس مقدار ستون، سطرهایی که ستون commission_pct آنها NULL است را با تابع ()NVL در خروجی به صفر تبدیل می کنیم. توجه کنید که تابع ()NVL مقدار خود ستون در جدول را تغییر نمی دهد. برای انجام این کار در مطالب انتهایی دوره با مثالی توضیح دادیم که توسط دستور UPDATE و تابع ()NVL مقدار NULL را به صفر تبدیل و بروز رسانی کنیم.

مثالفهرست حقوق سالیانه تمامی کارمندان را نشان دهید که شغل آنها IT_PROG نباشد.