برای جدول orders که ستون status_code مقادیر 'P'، 'S' و 'C' دارد، یک کوئری بنویسید که با استفاده از DECODE (یا معادل آن در MySQL) ستون جدید status_text را با مقادیر 'Pending'، 'Shipped'، 'Cancelled' و در غیر این صورت 'Unknown' نمایش دهد.
1.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:05 0.0
در MySQL تابع DECODE بهصورت پیشفرض وجود ندارد، بنابراین از عبارت CASE یا تابع IF() بهعنوان معادل استفاده کنید. راهحل ساده نوشتن یک SELECT است که با CASE WHEN مقدار status_code را به متن خوانا نگاشت میکند؛ اگر نیاز دارید سازگاری با کدهای Oracle داشته باشید میتوانید یک تابع ذخیرهشده با نام DECODE ایجاد کنید، اما برای سادگی و خوانایی CASE توصیه میشود. همچنین توجه کنید که اعمال تبدیل در ستونها معمولاً روی استفاده از ایندکس تأثیر دارد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته این است که در MySQL تابع DECODE وجود ندارد، بنابراین برای نقشهبرداری status_code به متن قابل فهم از CASE WHEN استفاده کنید. اگر هدف سازگاری با Oracle است، میتوانید یک تابع ذخیرهشده به نام DECODE ایجاد کنید، اما معمولاً CASE سادهتر و خواناتر است. نمونهٔ ساده: CASE status_code WHEN 'P' THEN 'Pending' WHEN 'S' THEN 'Shipped' WHEN 'C' THEN 'Cancelled' ELSE 'Unknown' END AS status_text. توجه کنید تبدیل روی ستونها معمولاً میتواند روی استفاده از ایندکس اثر بگذارد؛ برای فیلتر در WHERE بهتر است از status_code خام استفاده کنید و تبدیل را در SELECT انجام دهید.
گزارش