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

MySQL-এ ডট (.) সমাহিত স্ট্রিং সর্ট করা (CAST AS DECIMAL)

MySQL-এ VARCHAR কলামে ডট সমাহিত সংখ্যা (যেমন '10.5', '20.5') স্ট্রিং হিসেবে সর্ট হলে লেক্সিকোগ্রাফিক্যালি হয় (১০.৫, ১১, ২০...।)। সঠিক সংখ্যাসূচক সর্টিং için CAST(... AS DECIMAL) ব্যবহার করুন।

টেবিল এবং ডেটা

CREATE TABLE DemoTable (
    Value VARCHAR(20)
);

INSERT INTO DemoTable VALUES('20'), ('10.5'), ('11'), ('10'), ('20.5');

স্ট্রিং সর্ট (ভুল)

SELECT * FROM DemoTable ORDER BY Value;
10, 10.5, 11, 20, 20.5  -- লেক্সিকোগ্রাফিক্যাল (স্ট্রিং)

সঠিক সর্ট: CAST AS DECIMAL

SELECT * FROM DemoTable 
ORDER BY CAST(Value AS DECIMAL) ASC;

ফলাফল

+-------+
| Value |
+-------+
| 10    |
| 10.5  |
| 11    |
| 20    |
| 20.5  |
+-------+

CAST vs CONVERT

CAST(Value AS DECIMAL(10,2))      -- ANSI স্ট্যান্ডার্ড
CONVERT(Value, DECIMAL(10,2))     -- MySQL এক্সটেনশন
  • DECIMAL(10,2) — ১০ ডিজিট মোট, ২ ডেসিমেল প্লেস
  • প্রিসিশন/স্কেল না দিলে ডিফল্ট DECIMAL(10,0) = ইন্টিজার

পারফরম্যান্স টিপ

বড় টেবিলে প্রতিবার CAST করা ধীর। কম্পিউটেড কলাম বা সাপারেট নмериক কলাম রাখুন:

ALTER TABLE DemoTable ADD ValueNum DECIMAL(10,2) GENERATED ALWAYS AS (CAST(Value AS DECIMAL(10,2))) STORED;
CREATE INDEX idx_valnum ON DemoTable(ValueNum);
  1. MySQL-এ GROUP_CONCAT() এবং ORDER BY ব্যবহার করে এগরিগেট ফাংশনে সর্টিং প্রয়োগ করুন

  2. MySQL-এ নির্দিষ্ট প্যাটার্নের (John-*) ভিন্ন আইটেমের সংখ্যা গণনা করা

  3. MySQL-এ সংখ্যা মিশ্র স্ট্রিং সর্ট করুন

  4. Apache-এ MySQL ব্যবহার (Using MySQL with Apache)