بتاريخ: 22 نوفمبر 200718 سنة comment_116849 بسم الله الرحمن الرحيم أخوانى فى الله .... فى البدايه اود ان اعتذر عن غيابى هذا و لكن اسألكم المعذره لأنى فى غايه الأنشغال فكما تعلمون لا رحمه فى العمل . و ان شاء الله سوف اعوض هذا الوقت فى الدروس القادمه..توقفنا فى الدرس الماضى فى منتصف الفصل الثالث فى كتاب اوراكل وسوف نستكمل اليوم باقى الفصل و سوف ارفق اسئلة الأمتحان التى جاءت على هذا الفصل فقط لتتعلم كيفية الأجابه على مثل هذه الأسئله الخبيثه...بسم الله نبدأ .الدوال التحويليه Conversion Functions------------------------------------------------------------------------يوجد نوعين من التحويلات بالبيانات كما يلى:1- التحويل التلقائى Implicit Data Type Conversion2- التحويل الأجبارى Explicit Data Type Conversion أما فى النوع الأول فتقوم اوراكل بهذا التحويل تلقائيا وهذا مثال لتحويل ال char الى number Select last_name , job_idFrom employeesWhere salary = '24000'; هنا تم وضع الرقم بين single question و بهذا فهو char و ليس number ومع ذلك تظهر النتيجه صحيحه و هذا يدل على انه تم التحويل التلقائى من chat الى number ..أما النوع الثانى فهو يحتوى على اكثر من داله تقوم بتحويل البيانات كما يلى:1- التحويل من date الى char أو من number الى char To_char 2- التحويل من char الى number To_number 3- التحويل من char الى date TO_Dateسوف نقوم بالتركيز على الداله to_char فأنا اراها هامه جدا بالمقارنه بباقى الدوال*** صيغه كتابة الداله فى حاله التاريخ:--------------------------------------------------- TO_CHAR(date, 'format_model') ** format_model مدرج بالدرس جدول يحتوى على كافة ال format_model التى يجوز استخدلمها مع الداله.** لابد من وضع ال format_model بين single question .مثال:كما نعلم ان طريه كتابة التاريخ او ظهورها كما يلى DD-MON-YY و الأن نريد ان نظهر التاريخ فى هذه الصيغه : ( 10-October-Monday-2007 ) مثلا هنا يتحتم علينا استخدام الداله TO_Char كما يلى: Select to_char(sysdate,'dd-Month-Day-yyyy') as today From dual; انظر الى النتيجه و سوف تعرف اهميه هذه الداله ...مثال أخر: SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATEFROM employees; لاحظ فى ال format model وجود العامل fm الذى يمنع الزيرو على الشمال او المسافات التى ليس لها اى معنى.** *** صيغه كتابة الداله فى حاله الأرقام :-------------------------------------------------------- TO_CHAR(number, 'format_model') ** ** format_model مدرج بالدرس جدول يحتوى على كافة ال format_model التى يجوز استخدلمها مع الداله.** لابد من وضع ال format_model بين single question .مثال: SELECT TO_CHAR(salary, '$99,999.00') SALARYFROM employeesWHERE last_name = 'Ernst'; هناك بالكتاب جزء لشرح النظام RR و ال YY و كلنا نعلم مشكله عام 2000 التى حدثت بالتاريخ و التى جعلت اوراكل تعمل بالنظام RR----------------------------------------------------------------------------------------------ننتقل الأن الى الدوال المركبه Nesting Functionsمثال SELECT last_name, UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))FROM employeesWHERE department_id = 60; هنا سوف يتم تطبيق الدله التى بالداخل ثم ما قبلها ثم ما قبلها و هكذا حتى الداله التى بالخارج .. بمعنى انه سوف يأنى بالأسم و لكن من الحرف الأول الى الثامن ثم يدمج عليه كلمة US ثم يقوم بالتحويل الى Capital .*** الداله NVL ----------------------تعتبر من الدوال الهامه جدا فهى تقوم بتحويل ال Null value الى قيمه فعليه سواء كانت رقم او تاريخ او char .. كما يلى مثلا – NVL(commission_pct,0)– NVL(hire_date,'01-JAN-97')– NVL(job_id,'No Job Yet') SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SALFROM employees; هناك دوال اخرى مثل NVL2 وهى مدرجه بالشرح فى الكتاب مع امثله و لكن استخدامها فى الواقع العملى ليس بالقوى ....أخر جزء فى هذا الدرس هو Conditional Expressions-----------------------------------------------------------------الكل يعلم او يسمع عن الداله IF فهى مستخدمه فى كل لغات البرمجه نظرا لأهميتها الكبيره و انا ارى انه لأ غنى عنها .. و لكن لا يمكن استخدام هذا الدله فى لغة ال SQL و لكن يمكن استخدامها فى لغة PLSQL لأنها لغة برمجه .. اذا لابد من بديل يحل محل جمله IF فى لغة ال SQL و هذه البدائل هى الدوال الأتيه:– CASE expression– DECODE functionمثال اريد ان اعطى حوافز للموظفين و لكن بناءا على الوظيفه . فاذا كانت الوظيفه مثلا IT_PROG يتم ضرب المرتب فى رقم محدد و هكذا .. SELECT last_name, job_id, salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END "REVISED_SALARY"FROM employees; و هناك دالة أخر و هى نفس داله case و لكن بدل كلمه when و then يتم وضع ( , ) فقط كما يلى : SELECT last_name, job_id, salary, DECODE(job_id, 'IT_PROG', 1.10*salary, 'ST_CLERK', 1.15*salary, 'SA_REP', 1.20*salary, salary) REVISED_SALARYFROM employees; هذا و بالله التوفيق ..الدرس القادم فى غاية السهوله و غاية الأهميه و هوGroup Functionsالواجب حل التمارين من 10 الى الأخر .. و سوف ارسل الحل بعد يومين منعا للغش المرفقات اسئلة امتحان 007 على هذا الفصل فقط. Single_Row_Funtion.pdf تقديم بلاغ
بتاريخ: 22 نوفمبر 200718 سنة comment_116851 معاك دائما ان شاء اللهومستنينك على احر من الجمرشكرا لك وبارك الله لك بعلمك وعملك تقديم بلاغ
بتاريخ: 24 نوفمبر 200718 سنة comment_116951 جزاك الله كل خير يا بشمهندس سامح ، جهودك مباركة ان شاء الله وربنا يوفقكتحياتي تقديم بلاغ
بتاريخ: 24 نوفمبر 200718 سنة comment_116991 السلام عليكم و رحمة الله و بركاته ..جزاك الله خير يا استاذنا الفاضل سامح..أسجل متابعتي و شكري لك على هذا الجهد الرائع..وفقك الله لكل خير ..[جاري حل الأسئلة] تقديم بلاغ
بتاريخ: 23 مارس 201115 سنة comment_210199 جزاك الله خيرا يا بشمهندشوغفر لوالدتك ولجميع المسلمين تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.