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

MySQL-এ SUBSTRING_INDEX এবং CAST দিয়ে ফ্লোট ভ্যালু দুটি কলামে ভাগ করা

দশমিক সংখ্যা (যেমন '100.50') কে পূর্ণসংখ্যা অংশ এবং দশমিক অংশে আলাদা করতে SUBSTRING_INDEX() এবং CAST() ফাংশন কম্বাইন করা হয়।

টেবিল ও ডেটা তৈরি

mysql> CREATE TABLE DemoTable1951 (Value1 VARCHAR(20));

mysql> INSERT INTO DemoTable1951 VALUES ('100.50'), ('70.90'), ('1000.55');

ডেটা যাচাই

mysql> SELECT * FROM DemoTable1951;
+---------+
| Value1  |
+---------+
| 100.50  |
| 70.90   |
| 1000.55 |
+---------+

কোয়েরি: দশমিক বিন্দু দিয়ে ভাগ করা

mysql> SELECT 
    CAST(SUBSTRING_INDEX(Value1, '.', 1) AS UNSIGNED) AS FirstValue,
    CAST(SUBSTRING_INDEX(Value1, '.', -1) AS UNSIGNED) AS SecondValue
    FROM DemoTable1951;

ফাংশন ব্যাখ্যা:

  • SUBSTRING_INDEX(str, delim, count) — count > 0 হলে বাম পাশ থেকে count টি ডিলিমিটার পর্যন্ত; count < 0 হলে ডান পাশ থেকে।
  • SUBSTRING_INDEX(Value1, '.', 1) — প্রথম '.' এর বামপাশ (পূর্ণসংখ্যা অংশ)।
  • SUBSTRING_INDEX(Value1, '.', -1) — শেষ '.' এর ডানপাশ (দশমিক অংশ)।
  • CAST(... AS UNSIGNED) — স্ট্রিংকে নন-নেগেটিভ ইন্টিজারে রূপান্তর।

আউটপুট:

+------------+-------------+
| FirstValue | SecondValue |
+------------+-------------+
|        100 |          50 |
|         70 |          90 |
|       1000 |          55 |
+------------+-------------+

সতর্কতা এবং সীমাবদ্ধতা

  • দশমিক বিন্দু না থাকলে (যেমন '100') — SecondValue পুরো স্ট্রিং '100' হবে।
  • একাধিক দশমিক বিন্দু থাকলে (যেমন '1.2.3') — count=-1 শেষ বিন্দুর ডানপাশ নেবে।
  • নেগেটিভ সংখ্যা (যেমন '-10.5') — UNSIGNED কাস্ট করলে ভুল ফলাফল দেবে; SIGNED ব্যবহার করুন।

উন্নত পদ্ধতি: REGEXP_SUBSTR (MySQL 8.0+)

SELECT 
    CAST(REGEXP_SUBSTR(Value1, '^[0-9]+') AS UNSIGNED) AS int_part,
    CAST(REGEXP_SUBSTR(Value1, '[0-9]+$') AS UNSIGNED) AS frac_part
FROM DemoTable1951;

সর্বোত্তম অনুশীলন

দশমিক সংখ্যা সংরক্ষণের জন্য সবসময় DECIMAL(p,s) বা FLOAT/DOUBLE টাইপ ব্যবহার করুন — স্ট্রিং (VARCHAR) এড়িয়ে চলুন।

  1. MySQL টেবিলে কোনো মান কলামে আছে কিনা যাচাই করা

  2. MySQL-এ GREATEST() দিয়ে দুটি কলামের মধ্যে সর্বোচ্চ মান অনুযায়ী অর্ডার করা

  3. MySQL-এ UNIQUE কনস্ট্রেইন্ট দিয়ে ডুপ্লিকেট বাদ দিয়ে ইনসার্ট করা

  4. MySQL-এ একক কুয়েরি দিয়ে টেবিলের সব কলাম নির্দিষ্ট ভ্যালুতে আপডেট করা