কম্পিউটার টিউটোরিয়াল

MySQL-এ প্রথম ক্যারেক্টার অ্যালফানিউমেরিক নয় এমন সারি খুঁজে বের করা

প্রথম ক্যারেক্টার অ্যালফানিউমেরিক নয় এমন সারি খুঁজে বের করতে নিচের রেগুলার এক্সপ্রেশন ব্যবহার করা যাবে।

কেস ১ − যদি আপনি সেটি চান যেগুলো ডিজিট দিয়ে শুরু হয়, তবে নিচের সিনট্যাক্স ব্যবহার করুন:

SELECT *FROM yourTableName WHERE yourColumnName REGEXP '^[0-9]';

কেস ২ − যদি আপনি সেটি চান যেগুলো অ্যালফানিউমেরিক দিয়ে শুরু হয় না, তবে নিচের সিনট্যাক্স ব্যবহার করুন:

SELECT *FROM yourTableName WHERE yourColumnName REGEXP '^[^0-9A-Za-z]';

এটি বুঝতে একটি টেবিল তৈরি করা যাক। টেবিল তৈরির কোয়েরি:

mysql> create table getRowsFirstNotAlphanumeric 
-> ( 
-> Id int NOT NULL AUTO_INCREMENT, 
-> UserPassword varchar(20), 
-> PRIMARY KEY(Id) 
-> ); Query OK, 0 rows affected (0.61 sec)

ইনসার্ট কমান্ড দিয়ে কিছু রেকর্ড ইনসার্ট করা যাক। কোয়েরিটি হলো:

mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('@123456'); Query OK, 1 row affected (0.19 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('#7666666'); Query OK, 1 row affected (0.22 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('98876Carol'); Query OK, 1 row affected (0.16 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('$12345Carol'); Query OK, 1 row affected (0.09 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('%David567'); Query OK, 1 row affected (0.10 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('123456Larry'); Query OK, 1 row affected (0.07 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('909Robert'); Query OK, 1 row affected (0.12 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('3333Maxwell'); Query OK, 1 row affected (0.09 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('_123456Bob'); Query OK, 1 row affected (0.10 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('5767676Chris'); Query OK, 1 row affected (0.10 sec) mysql> insert into getRowsFirstNotAlphanumeric(UserPassword) values('(88883Mike'); Query OK, 1 row affected (0.11 sec)

এখন সিলেক্ট স্টেটমেন্ট দিয়ে সব রেকর্ড দেখানো যাক। কোয়েরিটি হলো:

mysql> select *from getRowsFirstNotAlphanumeric;

আউটপুট নিচে দেওয়া হলো:

+----+--------------+ | Id | UserPassword | +----+--------------+ | 1 | @123456      | | 2 | #7666666     | | 3 | 98876Carol   | | 4 | $12345Carol  | | 5 | %David567    | | 6 | 123456Larry  | | 7 | 909Robert    | | 8 | 3333Maxwell  | | 9 | _123456Bob   | | 10 | 5767676Chris | | 11 | (88883Mike   | +----+--------------+ 11 rows in set (0.00 sec)

কেস ১ − অ্যালফানিউমেরিক দিয়ে শুরু না হয় এমন সারি পাওয়ার কোয়েরি (দ্রষ্টব্য: আসল আর্টিকেলে কেস ১-এ ^[0-9] দিয়ে ডিজিট দিয়ে শুরু হওয়া সারি পাওয়া দেখানো হয়েছে, যা কেস ২-র বিপরীত):

mysql> SELECT *FROM getRowsFirstNotAlphanumeric 
-> WHERE UserPassword REGEXP '^[0-9]';

আউটপুট (ডিজিট দিয়ে শুরু হওয়া সারি):

+----+--------------+ | Id | UserPassword | +----+--------------+ | 3 | 98876Carol   | | 6 | 123456Larry  | | 7 | 909Robert    | | 8 | 3333Maxwell  | | 10 | 5767676Chris | +----+--------------+ 5 rows in set (0.00 sec)

কেস ২: অ্যালফানিউমেরিক (A-Z, a-z, 0-9) ছাড়া অন্য ক্যারেক্টার দিয়ে শুরু হওয়া সারি পাওয়ার কোয়েরি:

mysql> SELECT *FROM getRowsFirstNotAlphanumeric 
-> WHERE UserPassword REGEXP '^[^0-9A-Za-z]';

আউটপুট (স্পেশাল ক্যারেক্টার দিয়ে শুরু হওয়া সারি):

+----+--------------+ | Id | UserPassword | +----+--------------+ | 1 | @123456      | | 2 | #7666666     | | 4 | $12345Carol  | | 5 | %David567    | | 9 | _123456Bob   | | 11 | (88883Mike   | +----+--------------+ 6 rows in set (0.00 sec)

ব্যাখ্যা: REGEXP '^[0-9]' ডিজিট দিয়ে শুরু হওয়া সারি 매চ করে। REGEXP '^[^0-9A-Za-z]' অ্যালফানিউমেরিক বাদে যেকোনো ক্যারেক্টার দিয়ে শুরু হওয়া সারি ম্যাচ করে (নিগেটিভ ক্যারেক্টার ক্লাস)। পাসওয়ার্ড ভ্যালিডেশন, ডেটা ক্লিনিং, লগ পারসিং-এ এই প্যাটার্ন খুব কাজে লাগে।

  1. MySQL-এ YEAR() ফাংশন ব্যবহার করে বছরের ভিত্তিতে রেকর্ড ফিল্টার করা

  2. MySQL-এ প্রথম ডিজিট রিমুভ করা (SUBSTR)

  3. MySQL কোয়েরি ডেসিমেল কলাম থেকে হোল নাম্বার (যেমন 12.00, 35.00) বের করার জন্য

  4. MySQL-এ isMarried = 0 olan সারি গোষ্ঠী করে (GROUP BY) ক্লায়েন্ট অনুযায়ী বের করা