فهرست سرفصل‌های MySQL
خانه (HOME) مقدمه (Intro) پایگاه داده رابطه ای (RDBMS) SQL (SQL) SELECT (SELECT) WHERE (WHERE) عملگرهای AND, OR, NOT (AND, OR, NOT) مرتب سازی (ORDER BY) افزودن رکورد (INSERT INTO) مقادیر NULL (NULL Values) بروزرسانی (UPDATE) حذف (DELETE) محدودیت تعداد (LIMIT) کمینه و بیشینه (MIN and MAX) COUNT، AVG، SUM (COUNT, AVG, SUM) LIKE (LIKE) کاراکترهای عام (Wildcards) IN (IN) BETWEEN (BETWEEN) نام های مستعار (Aliases) اتصال ها (Joins) INNER JOIN (INNER JOIN) LEFT JOIN (LEFT JOIN) RIGHT JOIN (RIGHT JOIN) CROSS JOIN (CROSS JOIN) خود-اتصالی (Self Join) UNION (UNION) UNION ALL (UNION ALL) گروه بندی (GROUP BY) HAVING (HAVING) EXISTS (EXISTS) ANY و ALL (ANY, ALL) INSERT SELECT (INSERT SELECT) CASE (CASE) توابع Null (Null Functions) کامنت ها (Comments) عملگرها (Operators) ایجاد پایگاه داده (Create DB) حذف پایگاه داده (Drop DB) ایجاد جدول (Create Table) حذف جدول (Drop Table) تغییر جدول (Alter Table) قیود (Constraints) Not Null (Not Null) منحصر به فرد (Unique) کلید اصلی (Primary Key) کلید خارجی (Foreign Key) CHECK (Check) پیش فرض (Default) ایندکس (Create Index) افزایش خودکار (Auto Increment) تاریخ ها (Dates) نماها (Views) انواع داده (Data Types) توابع (MySQL Functions) ASCII (ASCII) CHAR_LENGTH (CHAR_LENGTH) CHARACTER_LENGTH (CHARACTER_LENGTH) CONCAT (CONCAT) CONCAT_WS (CONCAT_WS) FIELD (FIELD) FIND_IN_SET (FIND_IN_SET) FORMAT (FORMAT) INSERT (INSERT) INSTR (INSTR) LCASE (LCASE) LEFT (LEFT) LENGTH (LENGTH) LOCATE (LOCATE) LOWER (LOWER) LPAD (LPAD) LTRIM (LTRIM) MID (MID) POSITION (POSITION) REPEAT (REPEAT) REPLACE (REPLACE) REVERSE (REVERSE) RIGHT (RIGHT) RPAD (RPAD) RTRIM (RTRIM) SPACE (SPACE) STRCMP (STRCMP) SUBSTR (SUBSTR) SUBSTRING (SUBSTRING) SUBSTRING_INDEX (SUBSTRING_INDEX) TRIM (TRIM) UCASE (UCASE) UPPER (UPPER) ABS (ABS) ACOS (ACOS) ASIN (ASIN) ATAN (ATAN) ATAN2 (ATAN2) AVG (AVG) CEIL (CEIL) CEILING (CEILING) COS (COS) COT (COT) COUNT (COUNT) DEGREES (DEGREES) DIV (DIV) EXP (EXP) FLOOR (FLOOR) GREATEST (GREATEST) LEAST (LEAST) LN (LN) LOG (LOG) LOG10 (LOG10) LOG2 (LOG2) MAX (MAX) MIN (MIN) MOD (MOD) PI (PI) POW (POW) POWER (POWER) RADIANS (RADIANS) RAND (RAND) ROUND (ROUND) SIGN (SIGN) SIN (SIN) SQRT (SQRT) SUM (SUM) TAN (TAN) TRUNCATE (TRUNCATE) ADDDATE (ADDDATE) ADDTIME (ADDTIME) CURDATE (CURDATE) CURRENT_DATE (CURRENT_DATE) CURRENT_TIME (CURRENT_TIME) CURRENT_TIMESTAMP (CURRENT_TIMESTAMP) CURTIME (CURTIME) DATE (DATE) DATEDIFF (DATEDIFF) DATE_ADD (DATE_ADD) DATE_FORMAT (DATE_FORMAT) DATE_SUB (DATE_SUB) DAY (DAY) DAYNAME (DAYNAME) DAYOFMONTH (DAYOFMONTH) DAYOFWEEK (DAYOFWEEK) DAYOFYEAR (DAYOFYEAR) EXTRACT (EXTRACT) FROM_DAYS (FROM_DAYS) HOUR (HOUR) LAST_DAY (LAST_DAY) LOCALTIME (LOCALTIME) LOCALTIMESTAMP (LOCALTIMESTAMP) MAKEDATE (MAKEDATE) MAKETIME (MAKETIME) MICROSECOND (MICROSECOND) MINUTE (MINUTE) MONTH (MONTH) MONTHNAME (MONTHNAME) NOW (NOW) PERIOD_ADD (PERIOD_ADD) PERIOD_DIFF (PERIOD_DIFF) QUARTER (QUARTER) SECOND (SECOND) SEC_TO_TIME (SEC_TO_TIME) STR_TO_DATE (STR_TO_DATE) SUBDATE (SUBDATE) SUBTIME (SUBTIME) SYSDATE (SYSDATE) TIME (TIME) TIME_FORMAT (TIME_FORMAT) TIME_TO_SEC (TIME_TO_SEC) TIMEDIFF (TIMEDIFF) TIMESTAMP (TIMESTAMP) TO_DAYS (TO_DAYS) WEEK (WEEK) WEEKDAY (WEEKDAY) WEEKOFYEAR (WEEKOFYEAR) YEAR (YEAR) YEARWEEK (YEARWEEK) BIN (BIN) BINARY (BINARY) CASE (CASE) CAST (CAST) COALESCE (COALESCE) CONNECTION_ID (CONNECTION_ID) CONV (CONV) CONVERT (CONVERT) CURRENT_USER (CURRENT_USER) DATABASE (DATABASE) IF (IF) IFNULL (IFNULL) ISNULL (ISNULL) LAST_INSERT_ID (LAST_INSERT_ID) NULLIF (NULLIF) SESSION_USER (SESSION_USER) SYSTEM_USER (SYSTEM_USER) USER (USER) VERSION (VERSION) مثال ها (MySQL Examples) ویرایشگر (MySQL Editor) آزمون (MySQL Quiz) تمارین (MySQL Exercises) سرفصل (MySQL Syllabus) برنامه مطالعه (MySQL Study Plan) گواهینامه (MySQL Certificate)
نتیجه‌ای برای جستجو یافت نشد.
MySQL

MySQL — CASE (CASE)

آخرین بروزرسانی: 1404/08/18

CASE (CASE)

تابع شرطی CASE مثل IF-THEN-ELSE کار می کند. هر شرط (Condition) یعنی یک آزمون ساده. وقتی اولین شرط درست شد، همان لحظه نتیجه برمی گردد.

کاربرد تابع CASE در MySQL

CASE شرایط را به ترتیب بررسی می کند. سپس با اولین شرطِ درست، یک مقدار برمی گرداند. اگر هیچ شرطی درست نشود و ELSE داشته باشیم، مقدار ELSE برمی گردد. اگر ELSE نباشد، نتیجه NULL می شود.

سینتکس

CASE
  WHEN condition1 THEN result1;
  WHEN condition2 THEN result2;
  WHEN conditionN THEN resultN;
  ELSE result;
END;

مشاهده در ادیتور

مثال 1: برگرداندن متن بر اساس تعداد

با تغییر مقدار Quantity، متن مناسب نمایش داده می شود.

SELECT OrderID, Quantity,
  CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30";
    WHEN Quantity = 30 THEN "The quantity is 30";
    ELSE "The quantity is under 30";
  END
FROM OrderDetails;

مشاهده در ادیتور

مثال 2: مرتب سازی با CASE

اگر City خالی باشد، به جای آن با Country مرتب کن.

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
  (CASE
    WHEN City IS NULL THEN Country;
    ELSE City;
  END);

مشاهده در ادیتور

گام های عملی

  1. ستون یا مقدار هدف را مشخص کن.
  2. شرط ها را از مهم ترین به کم اهمیت بچین.
  3. در پایان، یک ELSE امن قرار بده.

نکات و لینک های مرتبط

نکته: عبارت تابع CASE در MySQL برای ساخت خروجی های خوانا عالی است.

برای شرط ساده، از IF استفاده کن. برای مقداردهیِ پیش فرض در NULL از COALESCE کمک بگیر.

جمع بندی سریع

  • CASE مثل IF-THEN-ELSE است.
  • با اولین شرطِ درست، متوقف می شود.
  • بدون ELSE و شرط درست، نتیجه NULL است.
  • برای مرتب سازی پویا هم کاربرد دارد.