MySQL-এ RIGHT() ফাংশন এবং NOT IN অপারেটর ব্যবহার করে নির্দিষ্ট শেষ ৩ ডিজিটवाले মান বাদ দিয়ে বাকি রেকর্ড বের করা যায়।
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable(Value int); Query OK, 0 rows affected (0.71 sec)
mysql> insert into DemoTable values(1234); Query OK, 1 row affected (0.54 sec) mysql> insert into DemoTable values(2345); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(7896); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable values(4321); Query OK, 1 row affected (0.15 sec)
সকল রেকর্ড দেখানো
mysql> select * from DemoTable;
+-------+ | Value | +-------+ | 1234 | | 2345 | | 7896 | | 4321 | +-------+ 4 rows in set (0.00 sec)
শেষ ৩ ডিজিট '234' বা '321' নয় এমন রেকর্ড বের করা
mysql> select * from DemoTable where right(Value,3) NOT IN('234','321');
+-------+ | Value | +-------+ | 2345 | | 7896 | +-------+ 2 rows in set (0.00 sec)
ব্যাখ্যা
| Value | RIGHT(Value,3) | NOT IN ('234','321')? | সিলেক্ট? |
|---|---|---|---|
| 1234 | '234' | না (234 তালিকাতে আছে) | না |
| 2345 | '345' | হ্যাঁ | হ্যাঁ |
| 7896 | '896' | হ্যাঁ | হ্যাঁ |
| 4321 | '321' | না (321 তালিকাতে আছে) | না |
স্ট্রিং কলামের জন্য
SELECT * FROM users WHERE RIGHT(phone, 3) NOT IN ('000', '111', '999');
পারফরম্যান্স বিবেচনা
RIGHT()ফাংশন কলামে থাকায় ইনডেক্স ব্যবহার হয় না- বড় টেবিলে:
WHERE Value % 1000 NOT IN (234, 321)(মডুলো অপারেটর) দ্রুত হতে পারে - বা কম্পিউটেড কলাম:
ALTER TABLE t ADD last3 INT AS (Value % 1000) STORED;+ ইনডেক্স
টিপ: NOT IN-এ NULL মান থাকলে ফলাফল খালি আসে। তালিকাতে NULL না থাকা নিশ্চিত করুন।