الدوال الدرجية في sql هي التي تأخذ معاملاً وحيداً وتعيد قيمة وحيدة.
تختلف الدوال الدرجية من نظام ادارة قواعد بيانات
الى آخر ، لذا سنركز على اهم الدوال الدرجية التي حددها المعيار SQL99 اضافة الى بعض الدوال الاخرى الهامة.
نصنِّف التوابع الدرجية إلى أربعة
أصناف أساسية هي
التالية:
الدوال الرقمية:
وهي التوابع الخاصة بالعمليات على
الأرقام، مثل تابع
التقريب إلى أقرب
فاصلة عشرية
دوال سلاسل المحارف: وهي
التوابع الخاصة بالعمليات على سلاسل
المحارف، مثل تابع
تحديد طول سلسلة
محرفية
دوال
التاريخ والوقت: وهي
التوابع الخاصة بالعمليات على التاريخ والوقت، مثل
تابع حساب الزمن
الفاصل بين تاريخين.
دوال
التحويل:
هي التوابع الخاصة بعملية تحويل
مُعامل الدخل من
نمط بيانات إلى
نمط آخر.
اولا الدوال الرقمية :
هي الدوال الخاصة بالعمليات على القيم الرقيمة
ومن اهمها مايلي:
Floor( )
يقرب معامل الدخل الى اقرب عدد صحيح اصغر من معامل الدخل .
Ceiling( )
يقرب معامل الدخل الى اقرب عدد صحيح اكبر من معامل الدخل .
Round( )
يقرب معامل الدخل ذو الفاصلة العشرية الى اقرب عدد صحيح او حقيقي بدقة محددة.
Abs( )
يعيد القيمة المطلقة لمعامل الدخل .
Sin( ), Cos( ), Tan( )
Atan( ), تحسب قيم ظل وظتا وجا وجتا الخاصة بمعامل الدخل
.
SQRT( )
يعيد قيمة الجذر التربيعي لمعامل الدخل .
RAND( )
يعيد رقم عشوائي بين 0و1 ويستخدم معامل الدخل كأساس لتوليد الرقم العشوائي.
امثلة :
نتناول فيما يلي امثلة عن استخدام الدوال الدرجية
الرقيمية في انظمة ادارة قواعد البيانات المختلفة :
الدالة floor
لكي نقرب الى اصغر عدد صحيح لدرجة الطالب 66.6 نكتب
التعليمة كالتالي
Select
floor(studentMark) from marks
ستظهر النتيجة 66 فقط بدون الفاصلة
الدالة Ceiling
لنقرب درجة الطالب الى الرقم الصحيح الاعلى سنكتب التالي
Select
ceiling(studentMark) from marks
ستظهر النتيجة 67
الدالة Round
إذا
كان المطلوب تدوير
عدد ما إلى
رقم بعدد خانات
عشرية محدد نستطيع استخدام الدالة Round كما يلي :
Select round(studentMark, 1) from marks
تظهر
قيم الخرج كقيم
ذات خانة عشرية
واحدة.
فإذا كانت علامة
طالب
66 ستظهر القيمة ضمن
نتيجة الاستعلام 66.0 وإذا
كانت 66.55
ستصبح
66.5
ملاحظة
لا
يتعرف نظام إدارة
قواعد البيانات Access
على الدوال floor و ceiling لكن يمكن الوصول لنفس النتائج باستخدام دالة
INT
بدلا عن Floor
.
في Oracle نستخدم Ceil بدلا
عن Ceiling
دوال السلاسل الحرفية :
هي الدوال الحرفية الخاصة بالعمليات على السلاسل
الحرفية ومن اهمها ما يلي :
Left()
وهي الدالة التي تعيد جزء من السلسلة من بدايتها حتى عدد معين من الحروف.
Right()
وهي الدالة التي تعيد جزء من السلسلة من نهايتها حتى عدد معين من الحروف.
Substr()
وهي الدالة التي تعيد جزء من السلسلة من موقع محدد فيها وبطول محدد من الحروف.
Length()
هي الدالة التي تعيد طول السلسلة الحرفية .
Concat()
وهي الدالة التي تستخدم لدمج اكثر من سلسلة حرفية .
Upper() /
Lower()
وهي الدالة التي تحول جميع حروف السلسلة الى احرف كبيرة او صغيرة .
Trim()
وهي الدالة التي تلغي الفراغات من بداية السلسلة ونهايتها .
Instr()
وهي الدالة التي تستخدم لتحديد موقع سلسلة جزئية ضمن سلسلة رئيسية .
وفيما يلي بعض الامثلة :
فإذا
أردنا كتابة الاستعلام الذي يعيد
أول
50 محرفًا من قيم
الحقل Title في الجدول News
يمكننا استخدام الصيغة التالية:
Select left(title,
50) from News
اذا أردنا كتابة الاستعلام الذي يعيد
سلسلة محارف بطول 5 محارف
اعتبارًا من قيم
الحقل Title
مبتدئًا من
المحرف رقم 10
نكتب الصيغة التالية:
Select substr(title,
10, 5) from News
اذا أردنا كتابة الاستعلام الذي يعيد
أطوال سلاسل المحارف الخاصة بالحقل Title
نستخدم الصيغة:
Select length(title)
from News
ملاحظات:
لا
يستخدم نظام إدارة
قواعد البيانات Oracle الدوال ،Right و Left ويتم
الاستعاضة عنها باستخدام التابع Substr
.
يستخدم نظام Ms-Access
ونظام SQL-Server
الصيغة Len
بدلا من الدالة Length
لحساب طول السلسلة.
كما يستخدم نظام Ms-Access
Lcase و
Ucase بدلا
من Lower و
Upper .
نظام SQL-Server و Charindex
و DB2 يستخدمو الدالة Posstr
لتحديد اول موقع ظهور لسلسلة بدلا من الدالة Instr .
الى الملتقى دمتم بخير
شكرا جزيلا ...رائع ...
ردحذفالعفو ...لقد سررنا بمرورك الرائع وتعليقك المشرف لنا ...
حذف