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

توسط پژوهشگر در 220 روز قبل ساعت 01:45
دسته بندی ها: MySQL MySQL for beginner
nima در 220 روز قبل ساعت 12:09

برای استخراج نام کوچک تا اولین فاصله، می‌توانید از تابع SUBSTRING_INDEX استفاده کنید: SUBSTRING_INDEX(full_name, ' ', 1). این روش نسبت به ترکیب SUBSTRING و LOCATE ساده‌تر است و در اکثر نسخه‌های MySQL کار می‌کند. اگر رکوردی بدون فاصله باشد، SUBSTRING_INDEX مقدار کامل را برمی‌گرداند، بنابراین بهتر است با CASE یا IFNULL نتیجه را همگن کرد. همچنین پیش از استفاده از این توابع، مقدار full_name را با TRIM پاکسازی کنید تا فاصله‌های اضافی به درستی مدیریت شوند.

گزارش

2 پاسخ

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

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