برای جدول customers که ستونهای customer_id و phone_number دارد، با استفاده از تابع INSTR موقعیت اولین فاصله (' ') در phone_number را پیدا کرده و customer_id و آن موقعیت را نمایش دهید و فقط ردیفهایی را برگردانید که فاصله وجود دارد.
13.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 02:05 0.0
تابع INSTR(string, substring) در MySQL موقعیت اولین وقوع زیررشته را (شروع از 1) برمیگرداند و در صورت عدم وجود 0 میدهد؛ بنابراین میتوانید از عبارت SELECT customer_id, INSTR(phone_number, ' ') AS pos FROM customers WHERE INSTR(phone_number, ' ') > 0 استفاده کنید. نکات: میتوانید از alias برای نامگذاری ستون موقعیت استفاده کنید و مراقب مقادیر NULL باشید (INSTR روی NULL نیز NULL برمیگرداند)، و برای مقایسهٔ حساس به حروف میتوانید از LOWER یا COLLATION مناسب بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهای سریع: همیشه قبل از استفاده از INSTR مقدار NULL را بررسی کنید یا از COALESCE/WHERE phone_number IS NOT NULL استفاده کنید تا ردیفها بهطور ناخواسته فیلتر نشوند و اگر لازم است فضایهای ابتدا/انتهای رشته را حذف کنید از TRIM بهره ببرید. در WHERE از عبارت INSTR(phone_number, ' ') > 0 استفاده کنید و برای خوانایی ستون موقعیت یک alias مثل pos تعیین کنید. اگر دادههای شما چندبایتی هستند یا مقایسهٔ حساس به حروف مطرح است، به collation و تفاوت CHAR_LENGTH در مقابل LENGTH دقت کنید تا موقعیت برحسب کاراکتر درست محاسبه شود. در صورت نیاز به الگوهای پیچیدهتر یا استخراج بخشهای قبل/بعد فاصله، از LOCATE/REGEXP یا SUBSTRING_INDEX استفاده کنید.
گزارش