بتـــــاريخ : 9/19/2008 12:04:04 AM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 2072 0


    الدرس السادس

    الناقل : mahmoud | العمر :35 | الكاتب الأصلى : أسامة البسومي | المصدر : www.arabopn.com

    كلمات مفتاحية  :
    برامج SQL PLUS

    بسم الله الرحمن الرحيم
    الدرس السادس
    سوف نكمل في هذا الدرس بعض ال function المهمة والتي نحتاجها

    * TO_DATE
    تقوم هذه الفانكشن بتحويل الSTRING الى تاريخ فلو اخذنا هذه على اساس انها STRING فيمكن ان نحولها الى DATE

    رمز:
    to_date( string1, [ format_mask ], [ nls_************************************************ ] )

    حيث ان STRING1 هو عبارة عن التاريخ المراد تحويله
    FROMAT_MASK هو عبارة عن صيغة المراد التحويل التاريخ اليها وقد استعرضت في ما سبق استخدامات او تحويلات التاريخ الى STRING راجع الدرس الرابع
    NLS_********************************************** ** وهو صيغة التاريخ وهي اختيارية حيث تستطيع وضع صيغة التاريخ الهجري مثلا

    مثال

    رمز:
    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-ابدأ القطع لكل اسم من الموقع الثالث

    رمز:
    انتهى الدرس
    كلمات مفتاحية  :
    برامج SQL PLUS

    تعليقات الزوار ()