MySQL-এ INSTR() ফাংশন ব্যবহার করে কোনো স্ট্রিং-এ নির্দিষ্ট শব্দ বা সাবস্ট্রিং প্রথম কোথায় পাওয়া যায় তা বের করা যায়। এটিকে ORDER BY-এ ব্যবহার করে সে শব্দवाले রেকর্ডগুলো শুরুতে আনা যায়।
সিনট্যাক্স
INSTR(string, substring)
- সাবস্ট্রিং খুঁজে পেলে অবস্থান (১-ভিত্তিক) রিটার্ন করে
- নাইলে ০ রিটার্ন করে
উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> create table DemoTable822(Word text); Query OK, 0 rows affected (1.11 sec)
mysql> insert into DemoTable822 values('Forever');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable822 values('ever');
Query OK, 1 row affected (1.31 sec)
mysql> insert into DemoTable822 values('every');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable822 values('everyday');
Query OK, 1 row affected (0.58 sec)
সকল রেকর্ড দেখানো
mysql> select * from DemoTable822;
+----------+ | Word | +----------+ | Forever | | ever | | every | | everyday | +----------+ 4 rows in set (0.00 sec)
'ever' শব্দ থাকা রেকর্ডগুলো 'ever'-এর অবস্থান অনুযায়ী সাজানো
mysql> select * from DemoTable822 where Word LIKE '%ever%' order by INSTR(Word, 'ever'), Word;
+----------+ | Word | +----------+ | ever | | every | | everyday | | Forever | +----------+ 4 rows in set (0.00 sec)
ব্যাখ্যা
| Word | INSTR(Word, 'ever') | অর্ডার |
|---|---|---|
| ever | 1 (শুরুতেই) | ১ম |
| every | 1 (শুরুতেই) | ২য় (Word ASC-এ 'ever' এর পর) |
| everyday | 1 (শুরুতেই) | ৩য় |
| Forever | 4 ('For' এর পর) | ৪র্থ |
WHERE ক্লজে INSTR ব্যবহার
WHERE INSTR(Word, 'ever') > 0
LIKE '%ever%'-এর চেয়ে কিছুটা দ্রুত হতে পারে (কেস-সেনসিটিভ)।
কেস-ইনসেনসিটিভ সার্চ
ORDER BY INSTR(LOWER(Word), 'ever')
MySQL 8.0+ Regexp বিকল্প
ORDER BY (Word REGEXP '^ever') DESC, Word
শুরুতে 'ever' থাকলে ১ (TRUE), নাইলে ০ (FALSE) — DESC দিয়ে TRUEवाले প্রথমে।