برای جدول 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 توصیه می‌شود. همچنین توجه کنید که اعمال تبدیل در ستون‌ها معمولاً روی استفاده از ایندکس تأثیر دارد.

توسط پژوهشگر در 220 روز قبل ساعت 02:05
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 220 روز قبل ساعت 11:01

نکته این است که در 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 انجام دهید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری