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

MySQL-এ DECIMAL প্রিসিশন সেট করে রাউন্ডিং রোধ


DECIMAL(M,D) দিয়ে সঠিক প্রিসিশন

DECIMAL(M,D)-এ M=মোট ডিজিট, D=দশমিকের পরে ডিজিট। D না দিলে (DECIMAL(7)) ডিফল্ট D=0 হয়, ফলে রাউন্ড হয়ে ইন্টিজার হয়ে যায়।

উদাহরণ: রাউন্ডিং সমস্যা

টেবিল (DECIMAL(7) - D=0)

mysql> create table stopRoundingDemo (
    -> Amount DECIMAL(7)
    -> );
Query OK, 0 rows affected (0.67 sec)

mysql> insert into stopRoundingDemo values(7836.783);
Query OK, 1 row affected, 1 warning (0.43 sec)
mysql> insert into stopRoundingDemo values(1737.67);
Query OK, 1 row affected, 1 warning (0.23 sec)
mysql> insert into stopRoundingDemo values(110.50);
Query OK, 1 row affected, 1 warning (0.33 sec)

ডেটা (রাউন্ড হয়েছে)

mysql> SELECT * FROM stopRoundingDemo;

আউটপুট

+--------+
| Amount |
+--------+
|   7837 |
|   1738 |
|    111 |
+--------+

সমাধান: DECIMAL(10,4) ব্যবহার

নতুন টেবিল

mysql> create table stopRoundingDemo2 (
    -> Amount DECIMAL(10,4)
    -> );
Query OK, 0 rows affected (0.81 sec)

mysql> insert into stopRoundingDemo2 values(7836.783);
Query OK, 1 row affected (0.14 sec)
mysql> insert into stopRoundingDemo2 values(1737.67);
Query OK, 1 row affected (0.14 sec)
mysql> insert into stopRoundingDemo2 values(110.50);
Query OK, 1 row affected (0.16 sec)

ডেটা (রাউন্ড নেই)

mysql> SELECT * FROM stopRoundingDemo2;

আউটপুট

+-----------+
| Amount    |
+-----------+
| 7836.7830 |
| 1737.6700 |
| 110.5000  |
+-----------+

সেরা অনুশীলন: আর্থিক ডেটার জন্য সবসময় DECIMAL(M,D) স্পেসিফাই করুন। FLOAT/DOUBLE এয়োয়ারিং এরর দেয়। M হলো মোট ডিজিট (দশমিক সহ), D দশমিকের পরে ডিজিট।

  1. MySQL-এ SOUNDEX() ফাংশন ব্যবহার করে ধ্বনিসাম্য খুঁজে বের করা

  2. MySQL-এ GROUP BY ও ORDER BY FIELD একসাথে ব্যবহার করে কাস্টম সর্টিং

  3. MySQL-এ LENGTH ও REPLACE ব্যবহার করে কমা (,) গণনা করা

  4. MySQL-এ ইউজার-ডিফাইনড ভেরিয়েবল ব্যবহার করে এক কলাম থেকে অন্য কলামের মান ডিরাইভ করা (রানিং টোটাল)