در جدول users ستونی به نام full_name وجود دارد؛ یک پرسوجو بنویسید که با استفاده از تابع CHARACTER_LENGTH طول هر full_name را نمایش دهد و تنها رکوردهایی که طول نام آنها بیش از 10 کاراکتر است را برگرداند.
26.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:25 0.0
برای حل این مسئله در MySQL از تابع CHARACTER_LENGTH استفاده کنید که تعداد کاراکترها را (نه بایتها) برمیگرداند—این موضوع برای متون چندبایتی مانند فارسی اهمیت دارد. یک نمونه پرسوجو میتواند به شکل SELECT full_name, CHARACTER_LENGTH(full_name) AS name_len FROM users WHERE CHARACTER_LENGTH(full_name) > 10 ORDER BY name_len DESC; باشد. نکات: اگر احتمال فاصلههای اضافی وجود دارد از TRIM استفاده کنید، و مطمئن شوید اتصال دیتابیس با UTF8/utf8mb4 تنظیم شده تا شمارش کاراکترها صحیح باشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
تابع CHARACTER_LENGTH برای شمارش کاراکترها (نه بایت) مناسب متون فارسی است، ولی قبل از شمارش بهتر است TRIM را برای حذف فاصلههای اضافی استفاده کنید و مطمئن شوید اتصال و ستونها با utf8/utf8mb4 تنظیم شدهاند. توجه داشته باشید که اعمال تابع روی خود ستون در شرط WHERE (مثلاً CHARACTER_LENGTH(full_name) > 10) مانع استفاده از ایندکس میشود و ممکن است کوئری را کند کند. اگر نیاز به اجراهای مکرر و سریع دارید، یک ستون محاسبهشده (GENERATED) یا فیلد نگهدارنده طول را از طریق trigger/محاسبه هنگام درج/بهروزرسانی ایجاد و ایندکس کنید تا کارایی بهمراتب بهتر شود.
گزارش