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

MySQL-এ স্ট্রিং আকারে সংখ্যা কম্পেয়ার করা (CAST AS SIGNED/UNSIGNED)

MySQL-এ VARCHAR কলামে সংরক্ষিত সংখ্যাসূচক স্ট্রিংগুলোকে সংখ্যা হিসেবে কম্পেয়ার করতে CAST(... AS SIGNED) বা CAST(... AS UNSIGNED) ব্যবহার করুন।

সমস্যা: স্ট্রিং কম্পারিশন

'999999' > '1235667'  -- TRUE (লেক্সিকোগ্রাফিক্যালি: '9' > '1')
-- কিন্তু সংখ্যা হিসেবে: 999999 < 1235667

সমাধান: CAST দিয়ে নাম্বারিক কম্পারিশন

CREATE TABLE compare_strings_demo (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    value VARCHAR(100)
);

INSERT INTO compare_strings_demo (value) VALUES 
('1235667'), ('999999'), ('999888'), ('567433'), ('2345123');

স্ট্রিং কম্পারিশন (ভুল ফলাফল)

SELECT * FROM compare_strings_demo WHERE value = '999999';  -- স্ট্রিং ম্যাচ, OK
SELECT * FROM compare_strings_demo WHERE value > '1000000'; -- ভুল! '999999' > '1000000' স্ট্রিংত বড়

নাম্বারিক কম্পারিশন (সঠিক)

SELECT * FROM compare_strings_demo 
WHERE CAST(value AS UNSIGNED) = 999999;

ফলাফল

+----+--------+
| id | value  |
+----+--------+
| 2  | 999999 |
+----+--------+

CAST টাইপস

টাইপরেঞ্জব্যবহার
SIGNED-2147483648 to 2147483647নেগেটিভ সংখ্যা থাকলে
UNSIGNED0 to 4294967295শুধু পজিটিভ (বড় সংখ্যা)
DECIMALনির্দিষ্ট প্রিসিশনদশমিক সংখ্যা

অন্যান্য কনভার্সন ফাংশন

CAST(value AS UNSIGNED)      -- ANSI SQL স্ট্যান্ডার্ড
CONVERT(value, UNSIGNED)     -- ODBC সিনট্যাক্স
value + 0                    -- শর্টহ্যান্ড (MySQL-স্পেসিফিক)
value * 1                    -- শর্টহ্যান্ড

WHERE-এ CAST ব্যবহার (ইনডেক্স ব্যবহার হয় না)

-- ইনডেক্স ব্যবহার হবে না
SELECT * FROM compare_strings_demo WHERE CAST(value AS UNSIGNED) > 1000000;

-- ভালো: জেনারেটেড কলাম + ইনডেক্স (MySQL 5.7+)
ALTER TABLE compare_strings_demo 
ADD COLUMN value_num INT GENERATED ALWAYS AS (CAST(value AS UNSIGNED)) STORED,
ADD INDEX idx_value_num (value_num);

SELECT * FROM compare_strings_demo WHERE value_num > 1000000;

সর্টিং-ও নাম্বারিক করুন

SELECT * FROM compare_strings_demo 
ORDER BY CAST(value AS UNSIGNED);
  1. MySQL-এ ORDER BY দিয়ে দুটি কলাম তুলনা করে এক রো বের করা

  2. MySQL-এ কলাম ভ্যালুতে যেকোনো একটি স্ট্রিং ম্যাচ করানো (OR 조건)

  3. MySQL-এ একসাথে দুটি কলাম আপডেট করা (সিঙ্গল কোয়েরি)

  4. C++-ে দুটি স্ট্রিং তুলনা (compare() ফাংশন দিয়ে)