الانتقال إلى المحتوى

سؤال في بعض function الsql


omar-alreyati

Recommended Posts

الاخوة الاعزاء: بعد التحية الطيبة لكم.

ارغب في معرفة بعض الباراميتر في الfunction الاتية:

اولاً: INSTR والتي تكون بالشكل الاتي :
INSTR(x, find_string [, start] [, occurrence])
ارغب في معرفة ما هي start & occurrence وما الفائدة من استخدامها

ثانياً: LPAD والتي تكون بالشكل الاتي :
LPAD(x, width [, pad_string])
ارغب بمعرفة فائدة pad_string

مع الشرح ان امكن بالأمثلة ليتضح الامر اكثر


وانا بانتظاركم وشكراً.

رابط هذا التعليق
شارك

الأخ الكريم

INSTR(x, find_string [, start] [, occurrence])
هذه الفانكشن هي عبارة عن ايجاد موقع حرف مثلا في كلمة معينة ويرجع لك قيمة رقمية فاذا وجد الرقم ارجع موقع الحرف واذا لم يجده يرجع الرقم صفر

SELECT INSTR('Admin05','A') from dual
INSTR('ADMIN05','A')
--------------------
                  1


طبعا في طرق في البحث يعني اذا اردت ان تبحث في كلمة Admin05 ولكن ان يبدأ من الحرف m
يعني يكون الموقع الثالث هو البداية نكتبها بالشكل التالي

  1* SELECT INSTR('Admin05','m','3') from dual

INSTR('ADMIN05','M','3')
------------------------
                      3


حيث تحدد بالبداية الحرف والموقع المراد البداية منه

LPAD
هي عملية قطع كلمة بنهاية الكلمة حيث تحدد له البداية والنهاية

  1* SELECT lpad('Admin05','3') from dual

LPA
---
Adm



ملاحظة يستفاد من instr في عملية ايجدا الحرف لنفرض انه جاءك سؤال يقول اقطع اسماء الموظفين اللذين يحتوي اسمهم على حرف a
لنفرض انه يوجد كم هائل من البيانات لذلك لن تعرف كل اسم ماهو ترتيب الحرف a
لذلك يكون القطع بالشكل التالي

Select  lpad(employee_name,instr(employee_name,'a')) from employees

رابط هذا التعليق
شارك

PAD تأتي بمعنى ملء الفراغ أو الحشو... و L ترمز لجهة اليسار LEFT...
هذه الدالة تأخذ ثلاثة معاملات:
1. سلسلة حرفية (string)، مثلاً omar.
2. عدد يمثل العرض (عدد الخانات) التي تريد أن تظهر بها السلسلة الحرفية السابقة، مثلاً 10.
3. حرف أو أكثر (كسلسلة حرفية) يستخدم في حشو الفراغ على يسار omar إن كان هناك فراغ. والفراغ يأتي من الفرق بين العدد المحدد في المعامل الثاني (10)وبين الطول الفعلي للسلسلة الحرفية في المعامل الأول (omar) وهو هنا 10-4=6.
مثال:

;SQL> SELECT LPAD('OMAR', 10, '*') FROM DUAL
الناتج يعطي
OMAR******



بالمناسبة، RPAD تقوم بنفس العمل، ولكن الحشو يتم من اليمين... والله أعلم.

تم تعديل بواسطة Amgad
رابط هذا التعليق
شارك

الاخ الكريم
هي منطقية عمل lpad كما تفضلت ولكن اذا اردت الاضافة مثلا بدون وضع كيفية الاضافة فتعمل الك قطع

رابط هذا التعليق
شارك

الأخ الفاضل Admin05
كلامك صحيح، فإذا تم تحديد معامل العرض أقل من طول السلسلة فإن القطع يتم على حسب عدد خانات العرض...
وشكراً على مشاركاتك القيمة...

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية