یک پرسوجو بنویسید که با شبیهسازی عملکرد تابع DECODE در MySQL مقادیر ستون status از جدول orders را به متنهای «پرداختشده» (۱)، «در انتظار» (۲) و «لغو» (۳) تبدیل کند و خروجی شامل order_id و status_text باشد.
4.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:32 0.0
در MySQL از CASE یا توابع شرطی مانند IF برای شبیهسازی DECODE استفاده کنید؛ مثلاً SELECT order_id, CASE status WHEN 1 THEN 'پرداختشده' WHEN 2 THEN 'در انتظار' WHEN 3 THEN 'لغو' ELSE 'نامشخص' END AS status_text FROM orders; حتماً وضعیت NULL را در نظر بگیرید و در صورت نیاز از COALESCE یا ELSE برای مقدار پیشفرض استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای جلوگیری از خطاهای NULL و ناامیدی از نتایج، از COALESCE یا CASE با ELSE استفاده کنید تا مقدار پیشفرض مشخص باشد. وقتی ستون status عناصری غیر عددی یا NULL دارد، بهتر است ابتدا آن را به عدد تبدیل کنید (مثلاً با CAST(status AS UNSIGNED)) یا از COALESCE(status,0) استفاده کنید. یک نکتهٔ کاربردی: در جداول بزرگ، ایندکس روی ستون status میتواند سرعت پاسخ را بالا ببرد چون شرطها روی این ستون اعمال میشوند. همچنین از عبارت CASE ساده استفاده کنید تا ترجمههای متنی مانند 'پرداختشده'، 'در انتظار'، 'لغو' واضح و قابل توسعه باشند.
گزارش