কম্পিউটার

MySQL এ regexp ব্যবহার করে শুধুমাত্র সংখ্যা পান?


আপনি যদি 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)

  1. শুধুমাত্র MySQL-এর নির্দিষ্ট ঘর থেকে যোগফল পান?

  2. নম্বর উপেক্ষা করতে MySQL REGEXP ব্যবহার করুন এবং শুধুমাত্র স্ট্রিং এবং '/' পেতে

  3. একটি নির্দিষ্ট MySQL সারি থেকে শুধুমাত্র একটি একক মান পান?

  4. একটি MySQL সঞ্চিত পদ্ধতিতে শুধুমাত্র একটি নির্দিষ্ট রেকর্ড পেতে IN() ব্যবহার করবেন?