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

MySQL-এ স্ট্রিং কলামকে নম্বর হিসেবে সর্ট করা (CAST ব্যবহার)

MySQL-এ স্ট্রিং (VARCHAR/CHAR) টাইপের কলামে সংখ্যা সংরক্ষিত থাকলে, ডিফল্ট সর্টিং লেক্সিকোগ্রাফিক্যালি (অক্ষরানুক্রমে) হয়। সংখ্যা হিসেবে সর্ট করতে CAST() ফাংশন ব্যবহার করতে হয়।

টেবিল তৈরি এবং ডেটা ইনসার্ট (স্ট্রিং হিসেবে সংখ্যা)

mysql> CREATE TABLE DemoTable (Id VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES('3');
mysql> INSERT INTO DemoTable VALUES('20');
mysql> INSERT INTO DemoTable VALUES('34');
mysql> INSERT INTO DemoTable VALUES('21');
mysql> INSERT INTO DemoTable VALUES('78');
mysql> INSERT INTO DemoTable VALUES('90');

ডিফল্ট স্ট্রিং সর্টিং (লেক্সিকোগ্রাফিক্যালি)

mysql> SELECT * FROM DemoTable;
+------+
| Id   |
+------+
| 3    |
| 20   |
| 34   |
| 21   |
| 78   |
| 90   |
+------+

দেখুন: '3' > '20' > '34'... কারণ '3' > '2' (প্রথম ক্যারেক্টার তুলনা)।

CAST দিয়ে সংখ্যা হিসেবে সর্ট (DESC - বড় থেকে ছোট)

mysql> SELECT * FROM DemoTable 
    -> ORDER BY CAST(Id AS SIGNED) DESC;

ফলাফল

+------+
| Id   |
+------+
| 90   |
| 78   |
| 34   |
| 21   |
| 20   |
| 3    |
+------+

অ্যাসেন্ডিং (ছোট থেকে বড়): ORDER BY CAST(Id AS SIGNED) ASC বা শুধু ORDER BY CAST(Id AS SIGNED)

CAST টাইপ অপশনস

  • SIGNED - সাইনড ইন্টিজার (নেগেটিভ+পজিটিভ)
  • UNSIGNED - অনসাইনড ইন্টিজার (শুধু পজিটিভ)
  • DECIMAL - দশমিক সংখ্যা
  • CHAR - ক্যারেক্টার (ডিফল্ট আচরণ)

বিকল্প: অপারেটর + 0 ব্যবহার

SELECT * FROM DemoTable ORDER BY (Id + 0) DESC;

MySQL-এ স্ট্রিং + 0 করলে অটোমেটিক্যালি সংখ্যায় রূপান্তর হয় (Type Coercion)।

সতর্কতা: CAST ব্যবহার করলে ইনডেক্স ব্যবহার হয় না (full table scan)। বড় টেবিলে পারফরম্যান্স ইস্যু হতে পারে।

  1. MySQL-এ স্ট্রিং দৈর্ঘ্য অনুযায়ী তারকা চিহ্ন যোগ করা

  2. Java দিয়ে MySQL ডেটাবেসে সংযোগ স্থাপন

  3. MySQL ডেটাবেসে স্ট্রিং দ্রুত অনুসন্ধান করা

  4. MySQL에서 데이터베이스의 테이블 개수 조회하기