الفرق بين المراجعتين لصفحة: «SQL/if»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) ط تعديل التصنيفات |
||
(مراجعتان متوسطتان بواسطة مستخدم واحد آخر غير معروضتين) | |||
سطر 8: | سطر 8: | ||
END IF; | END IF; | ||
</syntaxhighlight>إذ تعبّر الكلمة <code>condition</code> عن الشرط المُختبَر، وكلمة <code>statements</code> عن التعليمات التي ستُجرى أو قد تكون | </syntaxhighlight>إذ تعبّر الكلمة <code>condition</code> عن الشرط المُختبَر، وكلمة <code>statements</code> عن التعليمات التي ستُجرى أو قد تكون تعابير بدلًا من التعليمات. | ||
ويلاحظ في محركي PostgreSQL و Oracle أن الكلمة المفتاحية <code>ELSEIF</code> تصبح <code>ELSIF</code>، وفي محرك SQL Server فهي كلمتان منفصلتان أيّ <code>ELSE IF</code>، أما في محرك SQLite فلا يوجد شرط <code>IF</code> ويُستعاض عنه بشرط <code>[[SQL/case|CASE]]</code>. | ويلاحظ في محركي PostgreSQL و Oracle أن الكلمة المفتاحية <code>ELSEIF</code> تصبح <code>ELSIF</code>، وفي محرك SQL Server فهي كلمتان منفصلتان أيّ <code>ELSE IF</code>، أما في محرك SQLite فلا يوجد شرط <code>IF</code> ويُستعاض عنه بشرط <code>[[SQL/case|CASE]]</code>. | ||
سطر 165: | سطر 165: | ||
* [https://docs.oracle.com/cloud/latest/db112/LNPLS/controlstatements.htm#LNPLS004 توثيق IF في محرك Oracle] | * [https://docs.oracle.com/cloud/latest/db112/LNPLS/controlstatements.htm#LNPLS004 توثيق IF في محرك Oracle] | ||
* [https://docs.microsoft.com/en-us/sql/t-sql/language-elements/else-if-else-transact-sql توثيق IF في محرك SQLServer] | * [https://docs.microsoft.com/en-us/sql/t-sql/language-elements/else-if-else-transact-sql توثيق IF في محرك SQLServer] | ||
[[تصنيف:SQL]] | [[تصنيف:SQL|{{SUBPAGENAME}}]] | ||
[[تصنيف:SQL | [[تصنيف:SQL Control Structure|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 06:50، 12 يناير 2019
تستخدم صيغة IF
لاختبار شرط معين للتأكّد من تحقّقه أو عدم تحقّقه وإجراء ما يتناسب مع ذلك، وتكون البنية العامة لها بالشكل الآتي:
IF condition THEN statements
[ ELSEIF condition THEN statements
[ ELSEIF condition THEN statements
...]]
[ ELSE statements ]
END IF;
إذ تعبّر الكلمة condition
عن الشرط المُختبَر، وكلمة statements
عن التعليمات التي ستُجرى أو قد تكون تعابير بدلًا من التعليمات.
ويلاحظ في محركي PostgreSQL و Oracle أن الكلمة المفتاحية ELSEIF
تصبح ELSIF
، وفي محرك SQL Server فهي كلمتان منفصلتان أيّ ELSE IF
، أما في محرك SQLite فلا يوجد شرط IF
ويُستعاض عنه بشرط CASE
.
مثال
ليكن الجدول rivers الآتي موجودًا في قاعدة البيانات:
Continent | Outflow | LengthMiles | LengthKm | River | Serial |
---|---|---|---|---|---|
South America | Atlantic Ocean | 4345 | 6992 | Amazon | 1 |
Africa | Mediterranean | 4258 | 6853 | Nile | 2 |
North America | Gulf of Mexico | 3902 | 6275 | Mississippi | 3 |
Asia | Bohai Sea | 3395 | 5464 | Yellow River | 4 |
Africa | Atlantic Ocean | 2922 | 4700 | Congo | 5 |
Asia | Laptev Sea | 2736 | 4400 | Lena | 6 |
Africa | Gulf of Guinea | 2611 | 4200 | Niger | 7 |
Europe | Caspian Sea | 2266 | 3645 | Volga | 8 |
Asia | Andaman Sea | 1901 | 3060 | Salween | 9 |
إن تنفيذ استعلام SELECT
الآتي:
SELECT Name, Length =
IF LengthKm>5000 THEN 'Long'
ELSEIF LengthKm>3500 THEN 'Medium'
ELSE 'Short'
END
FROM rivers;
سيظهر تقديرًا لطول النهر في عمود Length
وذلك بالاعتماد على الشرط المُختبَر في حالات اختبار الشرط IF
، لتظهر النتائج الآتية:
Length | LengthKm | Name |
---|---|---|
Long | 6992 | Amazon |
Long | 6853 | Nile |
Long | 6275 | Mississippi |
Long | 5464 | Yellow River |
Medium | 4700 | Congo |
Medium | 4400 | Lena |
Medium | 4200 | Niger |
Medium | 3645 | Volga |
Short | 3060 | Salween |
ويمكن تحديد عدد الأنهار الإجمالي مقارنة بالعدد 5 كما في الشيفرة الآتية:
IF (SELECT COUNT(*) FROM rivers) > 5
PRINT 'There are more than 5 rivers.'
ELSE PRINT 'There are 5 or less rivers.' ;
ولدى تنفيذها في محرك SQL Server ستُطبَع العبارة:
There are more than 5 rivers.
التوافقية
SQLServer | SQLite | Oracle | PostgreSQL | MySQL |
---|---|---|---|---|
نعم (باسم ELSE IF )
|
لا (انظر CASE )
|
نعم (باسم ELSIF )
|
نعم (باسم ELSIF )
|
نعم |