در جدول customers ستونی به نام full_name وجود دارد؛ یک پرسوجو بنویسید که با استفاده از تابع SUBSTRING نام کوچک (تا اولین فاصله) را برای هر رکورد استخراج کند.
1.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:45 0.0
برای حل این مسئله در MySQL از تابع SUBSTRING همراه با تابع LOCATE (یا INSTR) استفاده کنید تا موقعیت اولین فاصله را پیدا کرده و از ابتدای رشته تا قبل از آن را برش بزنید. بهعنوان مثال میتوانید از عبارت CASE استفاده کنید تا اگر فاصلهای وجود نداشت کل مقدار full_name را برگردانید: CASE WHEN LOCATE(' ', full_name) > 0 THEN SUBSTRING(full_name, 1, LOCATE(' ', full_name)-1) ELSE full_name END. این پرسوجو را در هر محیطی که به یک سرور MySQL متصل است اجرا کنید و برای دادههای بدون فاصله مراقب بازگرداندن کل مقدار باشید.
2 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای استخراج نام کوچک تا اولین فاصله، میتوانید از تابع SUBSTRING_INDEX استفاده کنید: SUBSTRING_INDEX(full_name, ' ', 1). این روش نسبت به ترکیب SUBSTRING و LOCATE سادهتر است و در اکثر نسخههای MySQL کار میکند. اگر رکوردی بدون فاصله باشد، SUBSTRING_INDEX مقدار کامل را برمیگرداند، بنابراین بهتر است با CASE یا IFNULL نتیجه را همگن کرد. همچنین پیش از استفاده از این توابع، مقدار full_name را با TRIM پاکسازی کنید تا فاصلههای اضافی به درستی مدیریت شوند.
گزارش