با استفاده از تابع 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 استفاده کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:36
دسته بندی ها: MySQL MySQL for beginner
arash در 201 روز قبل ساعت 05:53

نکته مهم این است که CONCAT_WS مقادیر NULL را نادیده می‌گیرد اما رشته‌های خالی ('') را به عنوان مقدار معتبر در نظر می‌گیرد و ممکن است دو فاصله ایجاد کند. برای اجتناب از این موضوع، از NULLIF استفاده کنید تا مقادیر خالی به NULL تبدیل شوند: CONCAT_WS(' ', NULLIF(title, ''), NULLIF(first_name, ''), NULLIF(middle_name, ''), NULLIF(last_name, '')). اگر مطمئن نیستید که در ابتدا یا انتهای نام خالی وجود دارد، می‌توانید از TRIM نیز استفاده کنید تا فواصل زائد را حذف کند. به این ترتیب خروجی full_name فقط شامل بخش‌های غیرخالی و بدون فاصله‌های اضافی خواهد بود.

گزارش

1 پاسخ

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

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