با استفاده از تابع CONCAT_WS در MySQL یک پرسوجو بنویسید که برای جدول employees با ستونهای id, title, first_name, middle_name, last_name ستون id و نام کامل full_name را برگرداند، طوری که full_name از قسمتهای title، first_name، middle_name و last_name با فاصله جدا شود و مقادیر NULL حذف شوند.
5.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:36 0.0
برای حل این سوال از SELECT و تابع CONCAT_WS استفاده کنید؛ مثلاً SELECT id, CONCAT_WS(' ', title, first_name, middle_name, last_name) AS full_name FROM employees; تابع CONCAT_WS جداکننده را بین مقادیر قرار میدهد و به صورت خودکار مقادیر NULL را نادیده میگیرد، بنابراین فضای اضافی ایجاد نمیشود. در محیط MySQL Workbench یا هر کلاینت SQL میتوانید این پرسوجو را اجرا و نتیجه را مشاهده کنید؛ در صورت نیاز به حذف فاصلههای اضافی ابتدا یا انتهای رشته میتوانید از TRIM استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مهم این است که CONCAT_WS مقادیر NULL را نادیده میگیرد اما رشتههای خالی ('') را به عنوان مقدار معتبر در نظر میگیرد و ممکن است دو فاصله ایجاد کند. برای اجتناب از این موضوع، از NULLIF استفاده کنید تا مقادیر خالی به NULL تبدیل شوند: CONCAT_WS(' ', NULLIF(title, ''), NULLIF(first_name, ''), NULLIF(middle_name, ''), NULLIF(last_name, '')). اگر مطمئن نیستید که در ابتدا یا انتهای نام خالی وجود دارد، میتوانید از TRIM نیز استفاده کنید تا فواصل زائد را حذف کند. به این ترتیب خروجی full_name فقط شامل بخشهای غیرخالی و بدون فاصلههای اضافی خواهد بود.
گزارش