در یک جدول users، یک پرسوجوی MySQL بنویسید که تمام ردیفهایی را برگرداند که ستون phone فقط شامل ارقام باشد و در ابتدا یک علامت + اختیاری داشته باشد با استفاده از REGEXP.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:20 0.0
برای حل این مسئله از عبارت باقاعده در شرط WHERE همراه با تابع REGEXP استفاده کنید؛ از لنگرهای ^ و $ برای تعیین شروع و پایان رشته و از کلاس کاراکتر [0-9] یا \d برای مطابقت با ارقام بهره ببرید و برای علامت + اختیاری از \+? استفاده کنید. مثال کلی: SELECT * FROM users WHERE phone REGEXP '^\+?[0-9]+$' — توجه کنید که بسته به نحوه نوشتن رشته در SQL ممکن است نیاز به فرار کردن بکاسلشها داشته باشید (مثلاً '^\\+?[0-9]+$'). این پرسوجو در حوزه Functions & Expressions و Data Querying قرار میگیرد؛ قبل از اجرا روی دادههای واقعی با چند نمونه تست کنید تا فرمت دلخواه درست شناسایی شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهای کوتاه: استفاده از REGEXP در شرط WHERE به شما اجازه میدهد تا فرمت شماره را دقیقاً کنترل کنید. از محدودیتهای MySQL درباره escape کاراکترهای خاص مثل + با استفاده از \\+ در متن الگو و استفاده از ^ و $ برای مشخص کردن آغاز و پایان رشته غافل نشوید. به یاد داشته باشید ممکن است دادهها فضای خالی یا کاراکترهای جداکننده داشته باشند و در چنین حالتی الگو را با کلاسهای کاراکتری مانند [0-9] یا [[:digit:]] گسترش دهید. قبل از اجرای روی دادههای واقعی، با دادههای نمونه آزمایش کنید تا فرمت مطلوب به درستی شناسایی شود.
گزارش