حدد *،if(sva=1،"male"،"female") كـ ssva من taname حيث sva<>""
12.2
قيمة الحالة عندما [قيمة المقارنة] ثم النتيجة [عندما [مقارنة القيمة] ثم النتيجة ...] [نتيجة أخرى] نهاية الحالة عندما [حالة] ثم النتيجة [عندما [حالة] ثم النتيجة ...] [نتيجة أخرى] نهاية
في نتيجة الإرجاع للسيناريو الأول، القيمة = قيمة المقارنة. نتيجة الإرجاع للسيناريو الثاني هي النتيجة الحقيقية للسيناريو الأول. إذا لم تكن هناك قيمة نتيجة مطابقة، فإن نتيجة الإرجاع هي النتيجة بعد ELSE. إذا لم يكن هناك جزء ELSE، فإن قيمة الإرجاع هي NULL.
mysql> حدد الحالة 1 عندما 1 ثم "واحد"
-> عندما 2 ثم "اثنان" آخر "المزيد"
-> "واحد"
mysql> حدد الحالة عندما 1>0 ثم "صحيح" وآخر "خطأ"
-> 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
-> NULL
نوع قيمة الإرجاع الافتراضية لتعبير CASE هو أي نوع مجموعة متوافق من القيمة المرجعة، ولكن الوضع المحدد يعتمد على السياق. إذا تم استخدامه في سياق سلسلة، فسيتم إرجاع السلسلة الناتجة. إذا تم استخدامها في سياق رقمي، فسيتم إرجاع النتيجة كقيمة عشرية أو حقيقية أو عدد صحيح.
إذا (expr1، expr2، expr3)
إذا كانت قيمة expr1 صحيحة (expr1 <> 0 وexpr1 <> NULL)، فإن القيمة المرجعة لـ IF() هي expr2، وإلا فإن القيمة المرجعة هي expr3. القيمة المرجعة لـ IF() هي إما قيمة رقمية أو قيمة سلسلة، اعتمادًا على السياق.
mysql> SELECT IF(1>2,2,3 ->
3
mysql> SELECT IF(1<2,'yes ','no'
-> 'yes'
mysql> SELECT IF(STRCMP('test') ,'test1'),'no','yes');
-> 'no' إذا
كان واحد فقط من expr2 أو expr3 فارغًا بشكل صريح، فإن نوع نتيجة الدالة IF() هو نوع نتيجة التعبير غير NULL .
يتم تقييم expr1 كقيمة عددية، مما يعني أنه إذا كنت تقوم بالتحقق من صحة قيمة الفاصلة العائمة أو قيمة سلسلة، فيجب عليك استخدام عمليات المقارنة للتحقق.
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0
-> 1
في المثال الأول الموضح، القيمة المرجعة لـ IF(0.1) هي 0 لأن يتم تحويل 0.1 إلى قيمة عددية، مما يؤدي إلى اختبار IF(0). قد لا يكون هذا هو الوضع الذي تريده. في المثال الثاني، تتحقق المقارنة من قيمة النقطة العائمة الأصلية لمعرفة ما إذا كانت غير الصفر. استخدم الأعداد الصحيحة لنتائج المقارنة.
يتم حساب نوع الإرجاع الافتراضي لـ IF() (وهذا مهم عند تخزينه في جدول مؤقت) على النحو التالي:
Expression
قيمة الإرجاع
القيمة المرجعة لـ expr2 أو expr3 عبارة عن سلسلة.
خيط
القيمة المرجعة لـ expr2 أو expr3 هي قيمة فاصلة عائمة.
النقطة العائمة
القيمة المرجعة لـ expr2 أو expr3 هي عدد صحيح.
عدد صحيح
إذا كانت كل من expr2 وexpr3 عبارة عن سلسلتين، وكانت أي من السلسلتين حساسة لحالة الأحرف، فإن النتيجة التي يتم إرجاعها تكون حساسة لحالة الأحرف.
http://blog.knowsky.com/
إذا كانت فارغة (expr1، expr2)
إذا لم تكن قيمة expr1 فارغة، فإن قيمة الإرجاع IFNULL() هي expr1؛ وإلا فإن قيمة الإرجاع هي expr2. القيمة المرجعة لـ IFNULL() هي إما رقم أو سلسلة، اعتمادًا على السياق الذي يتم استخدامه فيه.
mysql
>
SELECTIFNULL
(
1,0
)
;
'yes');
-> 'yes'
قيمة النتيجة الافتراضية لـ IFNULL(expr1,expr2) هي الأكثر "عامة" بين التعبيرين، بالترتيب STRING أو REAL أو INTEGER. افترض حالة الجدول القائم على التعبير، أو يجب على MySQL تخزين القيمة المرجعة لـ IFNULL() في جدول مؤقت في الذاكرة:
CREATE TABLE tmp SELECT IFNULL(1,'test') AS test
في هذا المثال، اختبر العمود النوع هو CHAR(4).
نوليف (expr1، expr2)
إذا كان expr1 = expr2، فإن قيمة الإرجاع هي NULL، وإلا فإن قيمة الإرجاع هي expr1. هذا هو نفس الحالة عندما expr1 = expr2 ثم NULL ELSE expr1 END.
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2
-> 1
لاحظ أنه إذا كانت المعلمات غير متساوية، فإن القيمة التي حصلت عليها MySQL مرتين هي expr1.