أسامة موسى بتاريخ: 15 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 15 أبريل 2006 بسم الله الرحمن الرحيمالدرس السادسسوف نكمل في هذا الدرس بعض ال function المهمة والتي نحتاجها * TO_DATEتقوم هذه الفانكشن بتحويل الSTRING الى تاريخ فلو اخذنا هذه على اساس انها STRING فيمكن ان نحولها الى DATE to_date( string1, [ format_mask ], [ nls_language ] ) حيث ان STRING1 هو عبارة عن التاريخ المراد تحويله FROMAT_MASK هو عبارة عن صيغة المراد التحويل التاريخ اليها وقد استعرضت في ما سبق استخدامات او تحويلات التاريخ الى STRING راجع الدرس الرابعNLS_LANGUAGE وهو صيغة التاريخ وهي اختيارية حيث تستطيع وضع صيغة التاريخ الهجري مثلامثال to_date('2003/07/09', 'yyyy/mm/dd') would return a date value of July 9, 2003. to_date('070903', 'MMDDYY') would return a date value of July 9, 2003. to_date('20020315', 'yyyymmdd') would return a date value of Mar 15, 2002. * LAST_DAYوهو ارجاع تاريخ ىخر شهر فقط عليك ادخال اي تاريخ وهو يرجع لك ىخر يوم في هذا الشهرالقاعدة last_day( date ) مثالlast_day(to_date('2003/03/15', 'yyyy/mm/dd')) would return Mar 31, 2003 last_day(to_date('2003/02/03', 'yyyy/mm/dd')) would return Feb 28, 2003 last_day(to_date('2004/02/03', 'yyyy/mm/dd')) would return Feb 29, 2004 * ADD_MONTHS وهو اضافة شهر على التاريخ المعطىالقاعدة add_months( date1, n ) حيث n هو عدد المراد اضافتهاوممكن انقاص الاشهر او زيادتهامثال add_months('01-Aug-03', 3) would return '01-Nov-03' add_months('01-Aug-03', -3) would return '01-May-03' add_months('21-Aug-03', -3) would return '21-May-03' add_months('31-Jan-03', 1) would return '28-Feb-03' *NEXT_DAYوهو اضافة يوم او عدد من الايام على التاريخ المعطى next_date(date1,n) حيث ال n هو عدد الايام المراد اضافتها او تستطيع وضع اسم اليوم في هذا الاسبوع فيحضر لك تاريخه NEXT_DAY('01-01-2006',5) RETURN '06-01-2006' NEXT_DAY('15-01-2006',-5) RETURN '10-01-2006' next_day('01-Aug-03', 'TUESDAY') * TRIMتستخدم لحذف الاحرف في الكلمة سواء من جهة اليمين او اليسار او من الوسط trim( [ leading | trailing | both [ trim_character ] ] string1 ) حيث ان leading تستخدم لحذف الحروف من اول الكلمةtrailing تستخدم لحذف الحروف من آخر الكلمةboth تستخدم لحذف الحروف من اي جهة موجود في الكلمة (يمين/يسار/وسط)واذا لم يتم استخدام هذه المتغيرات مع trim فان الحذف يكون للفراغات فيطمثال trim(' tech ') سوف نرجع القيمة بدون فراغات'tech' trim(' ' from ' tech ') سوف ترجع الكلمة بدون فراغات ولاحظا اننا استخدمنا from 'tech' trim(leading '0' from '000123') سوف يتم حذف الاصفار من بداية الجملة'123' trim(trailing '1' from 'Tech1') سوف يتم حذف الاواحد من الآخر'Tech' trim(both '1' from '123Tech111') سوف يتم حذف الرقم واحد من اليمين والشمال'23Tech' * Ltrimتستخدم للحذف من جهة اليسار ومميزاتها انها تحذف الاحرف المراد حذفها سواء كانت مرتبه او لا ltrim( string1, [ trim_string ] ) مجموعة امثلة ltrim(' tech'); would return 'tech' ltrim(' tech', ' '); would return 'tech' ltrim('000123', '0'); would return '123' ltrim('123123Tech', '123'); would return 'Tech' ltrim('123123Tech123', '123'); would return 'Tech123' ltrim('xyxzyyyTech', 'xyz'); would return 'Tech' ltrim('6372Tech', '0123456789'); would return 'Tech' وهنا لاحظوا كيف تحذف ال y رغم تكرارها ltrim('xyxzyyyTech', 'xyz'); would return 'Tech' ltrim( '6372Tech', '0123456789'); would return 'Tech' *Rtrimنفس مبدأ عمل trim ولكنها عكس Ltrim حيث تحذف من جهة اليمين rtrim( string1, [ trim_string ] ) الأمثلة rtrim('tech '); would return 'tech' rtrim('tech ', ' '); would return 'tech' rtrim('123000', '0'); would return '123' rtrim('Tech123123', '123'); would return 'Tech' rtrim('123Tech123', '123'); would return '123Tech' rtrim('Techxyxzyyy', 'xyz'); would return 'Tech' rtrim('Tech6372', '0123456789'); would return 'Tech' rtrim('Techxyxzyyy', 'xyz'); would return 'Tech' rtrim('Tech6372', '0123456789'); would return 'Tech' *LPADوتستخدم لزيادة عدد من الفراغات او تكرار الكلمة من جهة اليسار طبعا سوف يبدأ من جهة اليسار ليزيد lpad( string1, padded_length, [ pad_string ] ) حيث padded_length هو العدد المراد زيادته طبعا ينقص منه طول الكلمة لو فرضنا اعطانا الكلمة RRRواراد ان يزيد عليها + واعطى العدد 10 طبعا طول الكلمة هي 3 يعني سوف يزيد 7 نجم فيصبح الشكل الكلمة كما يلي RRR+++++++أمثلة lpad('tech', 7); would return ' tech' lpad('tech', 2); would return 'te' lpad('tech', 8, '0'); would return '0000tech' lpad('tech on the net', 15, 'z'); would return 'tech on the net' lpad('tech on the net', 16, 'z'); would return 'ztech on the net' *RPADوتستخدم لزيادة عدد من الفراغات او تكرار الكلمة من جهة اليمين طبعا سوف يبدأ من جهة اليمين ليزيد rpad( string1, padded_length, [ pad_string ] ) امثلة rpad('tech', 7); would return 'tech ' rpad('tech', 2); would return 'te' rpad('tech', 8, '0'); would return 'tech0000' rpad('tech on the net', 15, 'z'); would return 'tech on the net' rpad('tech on the net', 16, 'z'); would return 'tech on the netz' *SUBSTRيستخدم لقطع جملة معينة او كلمة معينة ويجب ان تحدد بداية القطع وعدد الاحرف او طول المراد قطعه substr( string, start_position, [ length ] ) مع ملاحظة اذا كان بداية القطع صفر فإن ال SUBSTR تغير القيمة الى واحدواذا كان الرقم بداية القطع هو موجب فانه يبدأ من بداية الكلمة يعني اليسارواذا كان الرقم بداية القطع هو سالب فانه يبدأ من نهاية الكلمة يعني اليمينامثلة substr('This is a test', 6, 2) would return 'is' substr('This is a test', 6) would return 'is a test' substr('TechOnTheNet', 1, 4) would return 'Tech' substr('TechOnTheNet', -3, 3) would return 'Net' substr('TechOnTheNet', -6, 3) would return 'The' substr('TechOnTheNet', -8, 2) would return 'On' * INSTRيستخدم لارجاع موقع الحرف في الكلمة وكذلك يستخدم للبحث عن حرف في كلمة فاذا وجده يرجع موقعه والا يرجع القيمة صفر ويمكن ان يستغل في معالجة بعض البيانات instr( string1, string2, [ start_position ], [ nth_appearance ] ) الامثلة instr('Tech on the net', 'e') would return 2; the first occurrence of 'e' instr('Tech on the net', 'e', 1, 1) would return 2; the first occurrence of 'e' instr('Tech on the net', 'e', 1, 2) would return 11; the second occurrence of 'e' instr('Tech on the net', 'e', 1, 3) would return 14; the third occurrence of 'e' instr('Tech on the net', 'e', -3, 2) would return 2. * LENGTHيستخدم لارجاع طول الكلمة او الجملة length( string1 ) مثال length(NULL) would return NULL. length('') would return NULL. length('Tech on the Net') would return 15. length('Tech on the Net ') would return 16. *TRANSLATEيستخدم لاستبدال احرف معينه انت تحددها بأخرىحيث يبدل كل حرف مقابله حرفيعني لو حددنا الاحرف RTY من الكلمة RTYYRT ونريد ابدالها ب QW3 لاحظ انه بدل ال Y سوف يبدلها ب 3 وبدل T سوف يبدلها ب W وبدل ال R سوف يبدلها ب Qلتصبح الكلمة QW33QWالقاعدة translate( string1, string_to_replace, replacement_string )حيث string_to_replace هو الاحرف المراد ابدالها بالكلمةreplacement_string الاحرف الجديدة المراد ابدالها بالاحرف القديمةامثلة translate('1tech23', '123', '456); would return '4tech56' translate('222tech, '2ec', '3it'); would return '333tith' * REPLACEوتستخدم لحذف او استبدال الكلماتreplace( string1, string_to_replace, [ replacement_string ] )حيث تبين هنا ان الكلمة المراد استبدالها وهي تشبه ال TRANSLATE تقريبا والفرق هو ان ال TRANSLATE تبدل الاحرف فقط اما الREPLACE تعمل على الحذف والابدال اذا لم نحدد لها الاحرف المراد الابدال بها فيما لو استخدمت فقط بالشكل التالي replace('123123tech', '123'); would return 'tech' replace('123tech123', '123'); would return 'tech' اما اذا استخدمت بالشكل التالي فانها تشبه عمل TRANSLATE replace('222tech, '2', '3'); would return '333tech' replace('0000123', '0'); would return '123' replace('0000123', '0', ' '); would return ' 123' *CONCATيستخدم لدمج كلمتين او اكثر ببعضهما concat( string1, string2 ) ويمكن استبدالها بالرمز || concat('Tech on', ' the Net'); would return 'Tech on the Net'. concat('a', 'b') would return 'ab'. 'Tech on'|| ' the Net' would return 'Tech on the Net'. 'a'|| 'b' would return 'ab'. الأسئلةلدينا الجدول التالي يحتوي على اسم الموظف ورقم الموظفوالبيانات بالشكل التالي emp_no emp_name birth_date ---------- ----------------------------- ---------------- 10 ali ahmed ali 20-01-1970 20 Admin05 05 05 20-02-1976 30 ahmed moheme 20-01-1960 40 50dfgdr 50 20-10-1950 1-اعرض اسماء الموظفين وتاريخ ميلادهم بزيادة 5 شهور 2-اعرض اسماء الموظفين وتاريخ ميلادهم على ان يكون تاريخ الميلاد زيادة 5 ايام3-احذف اول 3 احرف من كل اسم4-استخدم ال concat لدمج اسم الموظف ورقمه5-استبدل ال الحرف a ب e من كل اسم6-بين موقع الحرف m من كل اسم7-بين طول كل اسم من كل حرف8-استبدل اخر 3 احرف من كل اسم بحرف v واعرضها9-اضف 9 نجم من جهة اليمين لكل اسم مرة وكن جهة اليسار مرة اخرى10-ابدأ القطع لكل اسم من الموقع الثالث انتهى الدرس الدرس الخامس ..... القائمة الرئيسية .... الدرس السابع 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mdsalah بتاريخ: 2 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 2 يونيو 2006 مشكور اخى الفاضل واتمنى منك مزيد العطاء وجازاك الله خيرا وشكرا لهذا الموقع الاكثر من رائع ومزيد من التقدم MDSALAH اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
medohadido بتاريخ: 1 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 1 سبتمبر 2006 شكرا اخى على مجهودك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
osama80 بتاريخ: 29 نوفمبر 2006 تقديم بلاغ مشاركة بتاريخ: 29 نوفمبر 2006 بارك الله فيك اخي الفاضل و اتمنى من الله ان يتم عليكم بثمرة هذا العمل و تحمل أمانة العلم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
جلال شواقفه بتاريخ: 31 أكتوبر 2007 تقديم بلاغ مشاركة بتاريخ: 31 أكتوبر 2007 احسنت ويعطيك العافيه اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
gendia_9i بتاريخ: 30 نوفمبر 2008 تقديم بلاغ مشاركة بتاريخ: 30 نوفمبر 2008 ممتاز,,,,,,,,,,,,,جزاك الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
HIGHPOINT بتاريخ: 3 مارس 2013 تقديم بلاغ مشاركة بتاريخ: 3 مارس 2013 فانكش ترجع بعدد ايام الشهر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
HIGHPOINT بتاريخ: 3 مارس 2013 تقديم بلاغ مشاركة بتاريخ: 3 مارس 2013 عدد ايام الشهر كالتالييناير 31فبراير 28او 29مارس 31 الي الاخر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.