بعض الدوال المساعدة في SQL

من موسوعة حسوب
< SQL
مراجعة 15:15، 17 يناير 2018 بواسطة Nourtam (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الدوال الرياضية

الدالة مهمتها
COUNT(*)‎ تعيد عدد السجلات الموجودة في الجدول
MAX(col_name)‎ تعيد القيمة الأكبر في حقل col_name في سجلات الجدول
MIN(col_name)‎ تعيد القيمة الأصغر في حقل col_name في سجلات الجدول
AVG(col_name)‎ تعيد قيمة المتوسط الحسابي لقيم الحقل col_name في سجلات الجدول
SUM(col_name)‎ تعيد قيمة مجموع قيم الحقل col_name في سجلات الجدول
SQRT(m)‎ تعيد قيمة الجذر التربيعي للقيمة m (قد تكون قيمة أحد الحقول)
RAND()‎ تعيد قيمة عشوائية مُولّدة واقعة في المجال ما بين القيمة 0 والقيمة 1
MOD(N,M)‎ تعيد باقي قسمة N على M
OCT(N)‎ تعيد سلسلة من الخانات الثنائية bits تعبر عن تمثيل العدد N بالنظام الثماني Octal
HEX(N)‎ تعيد سلسلة نصية تعبّر عن تمثيل N بالنظام الست عشري Hexadecimal
PI()‎ تعيد قيمة النسبة PI
POW(X,Y) | POWER(X,Y)‎ تعيد قيمة العدد X مرفوعًا للقوة Y
ROUND(X)‎ تعيد أقرب صحيح يمكن تقريب العدد X له

الدوال النصيّة

الدالة مهمتها
CONCAT('string1','string2')‎ تعيد سلسلة نصية وحيدة ناتجة عن لربط السلسلتين 'string1' و 'string2'
LOWER('string')‎ تعيد سلسلة نصية بعد تحويل كافة الأحرف الواردة في السلسلة 'string' إلى حالة الأحرف الصغيرة
UPPER('string')‎ تعيد سلسلة نصية بعد تحويل كافة الأحرف الواردة في السلسلة 'string' إلى حالة الأحرف الكبيرة
CHAR_LENGTH('string')‎ تعيد عدد أحرف السلسلة النصية 'string'
TRIM('string')‎ تعيد السلسلة النصية 'string' بعد إزالة الفراغات على طرفيها (إن وُجدت)

مثال

إذا كان الجدول الآتي cars موجودًا في قاعدة البيانات:

Colour Price Year Company Model CarID
White 22,500 2018 KIA Optima 05081
Red 25,995 2017 KIA Optima Hybrid 05082
Red 31,900 2018 KIA Stinger 05083
Black 31,990 2017 KIA Cadenza 05084
Blue 23,240 2018 KIA Niro 05085
Grey 14,200 2018 KIA Rio 5-Door 05086
Blue 18,200 2018 KIA Forte5 05087
Blue 32,250 2017 KIA Soul EV 05088
Red 23,385 2017 Nissan Altima 05089
White 46,195 2017 Nissan Armada 05090
Black 33,495 2017 Nissan Maxima 05091
Black 30,715 2017 Nissan Murano 05092
Grey 31,265 2017 Nissan Pathfinder 05093
White 17,875 2017 Nissan Sentra 05094
Red 12,875 2017 Nissan Versa 05095

إن تنفيذ الاستعلام الآتي:

SELECT count(*)  AS Total Number, MAX(Price) AS Most Expensive, MIN(Price) AS Cheapest, ROUND(AVG(Price)) AS Average, SUM(Price) AS Total Sum
FROM cars;

سيُظهر العدد الإجمالي للسيارات الموجودة في الجدول بمسمى Total Number وقيمة السيارة الأعلى سعرًا بمسمى Most Expensive وقيمة السيارة الأقل سعرًا Cheapest والمتوسط الحسابي لسعر السيارات من بعد تقريبه لأقرب عدد صحيح Average والمجموع الإجمالي لأسعار السيارات Total Sum، لتظهر النتائج الآتية:

Total Sum Average Cheapest Most Expensive Total Number
396,080 26,404 12,875 46,195 15

وعند تنفيذ الاستعلام الآتي:

SELECT CONCAT(UPPER(Model), ' - ' , Company, ' - ' , LOWER(Colour)) AS Name
FROM cars
ORDER BY RAND();

سيظهر عمود واحد يحتوي على نوع السيارة (بعد تحويله لأحرف كبيرة) متبوعًا بشركتها المنتجة ولونها (بعد تحويله لأحرف صغيرة)، وترتيب النتائج الصادرة ترتيبًا عشوائيًا، لتظهر النتائج الآتية:

Name
RIO 5-DOOR - KIA - grey
STINGER - KIA - red
ARMADA - Nissan - white
SOUL EV - KIA - blue
PATHFINDER - Nissan - grey
MAXIMA - Nissan - black
ALTIMA - Nissan - red
OPTIMA HYBRID - KIA - red
OPTIMA - KIA - white
MURANO - Nissan - black
CADENZA - KIA - black
NIRO - KIA - blue
FORTE5 - KIA - blue
SENTRA - Nissan - white
VERSA - Nissan - red

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

الدالة MySQL PostgreSQL Oracle SQLite SQL Server
COUNT(*)‎ نعم نعم نعم نعم نعم
MAX(col_name)‎ نعم نعم نعم نعم نعم
MIN(col_name)‎ نعم نعم نعم نعم نعم
AVG(col_name)‎ نعم نعم نعم نعم نعم
SUM(col_name)‎ نعم نعم نعم نعم نعم
SQRT(m)‎ نعم نعم نعم لا نعم
RAND()‎ نعم RANDOM()‎ DBMS_RANDOM.VALUE()‎ RANDOM()‎ نعم
MOD(N,M)‎ نعم نعم نعم % %
OCT(N)‎ نعم لا لا لا لا
HEX(N)‎ نعم TO_HEX(N)‎ RAWTOHEX(N)‎ نعم لا
PI()‎ نعم نعم نعم نعم نعم
POW(X,Y) | POWER(X,Y)‎ نعم نعم نعم لا نعم
ROUND(X)‎ نعم نعم نعم نعم نعم
CONCAT('string1','string2')‎ نعم نعم نعم || نعم
LOWER('string')‎ نعم نعم نعم نعم نعم
UPPER('string')‎ نعم نعم نعم نعم نعم
CHAR_LENGTH('string')‎ نعم نعم LENGTH('string')‎ LENGTH('string')‎ LEN('string')‎