আপনি যদি REGEXP ব্যবহার করে শুধুমাত্র সংখ্যা পেতে চান, তাহলে নিম্নোক্ত রেগুলার এক্সপ্রেশনটি ব্যবহার করুন (^[0-9]*$) যেখানে ধারা আছে।
কেস 1 - আপনি যদি শুধুমাত্র সেই সারিগুলি চান যাতে ঠিক 10টি সংখ্যা থাকে এবং সবগুলি অবশ্যই শুধুমাত্র অঙ্কের হতে হবে, নীচের রেগুলার এক্সপ্রেশনটি ব্যবহার করুন৷
SELECT *FROM yourTableName WHERE yourColumnName REGEXP '^[0-9]{10}$';
কেস 2 - আপনি যদি 1 বা তার বেশি ডিজিট সহ শুধুমাত্র সেই সারিগুলি চান তবে নিম্নলিখিতটি সিনট্যাক্স −
SELECT *FROM yourTableName WHERE yourColumnName REGEXP '^[0-9]*$';
উপরের সিনট্যাক্সটি শুধুমাত্র সেই সারিগুলি দেবে যেগুলিতে কোনও অক্ষর নেই৷
৷উপরের সিনট্যাক্স বুঝতে, আসুন একটি টেবিল তৈরি করি। একটি টেবিল তৈরি করার প্রশ্নটি নিম্নরূপ -
mysql> insert into OnlyDigits(UserId, UserName) values('123User1','John'); Query OK, 1 row affected (0.16 sec) mysql> insert into OnlyDigits(UserId, UserName) values('3445User2','Carol'); Query OK, 1 row affected (0.19 sec) mysql> insert into OnlyDigits(UserId, UserName) values('145363User3','Mike'); Query OK, 1 row affected (0.20 sec) mysql> insert into OnlyDigits(UserId, UserName) values('13455User4','Larry'); Query OK, 1 row affected (0.22 sec) mysql> insert into OnlyDigits(UserId, UserName) values('123555User5','Sam'); Query OK, 1 row affected (0.15 sec) mysql> insert into OnlyDigits(UserId, UserName) values('596766User6','David'); Query OK, 1 row affected (0.24 sec) mysql> insert into OnlyDigits(UserId, UserName) values('96977User7','Robert'); Query OK, 1 row affected (0.15 sec) mysql> insert into OnlyDigits(UserId, UserName) values('99999User8','James'); Query OK, 1 row affected (0.20 sec) mysql> insert into OnlyDigits(UserId, UserName) values('9999999','James'); Query OK, 1 row affected (0.13 sec) mysql> insert into OnlyDigits(UserId, UserName) values('153545','Maxwell'); Query OK, 1 row affected (0.23 sec) mysql> insert into OnlyDigits(UserId, UserName) values('9999986787','Johnson'); Query OK, 1 row affected (0.20 sec)
এখন আপনি সিলেক্ট স্টেটমেন্ট ব্যবহার করে টেবিল থেকে সমস্ত রেকর্ড প্রদর্শন করতে পারেন। প্রশ্নটি নিম্নরূপ -
mysql> select *from OnlyDigits;
নিম্নলিখিত আউটপুট −
+----+-------------+----------+ | Id | UserId | UserName | +----+-------------+----------+ | 1 | 123User1 | John | | 2 | 3445User2 | Carol | | 3 | 145363User3 | Mike | | 4 | 13455User4 | Larry | | 5 | 123555User5 | Sam | | 6 | 596766User6 | David | | 7 | 96977User7 | Robert | | 8 | 99999User8 | James | | 9 | 9999999 | James | | 10 | 153545 | Maxwell | | 11 | 9999986787 | Johnson | +----+-------------+----------+ 11 rows in set (0.00 sec)
কেস 1 - আপনি যখন একটি স্ট্রিং-এ ঠিক 10টি সংখ্যা চান এবং সবগুলি অবশ্যই একটি সংখ্যা হতে হবে তখন regex-এর সাথে ক্যোয়ারীটি হল:
mysql> select *from OnlyDigits -> where UserId REGEXP '^[0-9]{10}$';
নিচের আউটপুট −
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 11 | 9999986787 | Johnson | +----+------------+----------+ 1 row in set (0.00 sec)
কেস 1 এর বিকল্প রেগুলার এক্সপ্রেশন। প্রশ্নটি নিম্নরূপ:
mysql> select *from OnlyDigits -> where UserId REGEXP '^[[:digit:]]{10}$';
নিচের আউটপুট −
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 11 | 9999986787 | Johnson | +----+------------+----------+ 1 row in set (0.00 sec)
কেস 2 - আপনি যদি এক বা একাধিক সংখ্যা সহ শুধুমাত্র সেই সারিগুলি চান (শুধুমাত্র সংখ্যা)। প্রশ্নটি নিম্নরূপ:
mysql> select *from OnlyDigits -> where UserId REGEXP'^[0-9]*$';
নিম্নলিখিত আউটপুট:
+----+------------+----------+ | Id | UserId | UserName | +----+------------+----------+ | 9 | 9999999 | James | | 10 | 153545 | Maxwell | | 11 | 9999986787 | Johnson | +----+------------+----------+ 3 rows in set (0.00 sec)