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

MySQL-এ ভিন্ন ডেটা টাইপ (স্ট্রিং এবং ইন্টিজার) তুলনা করলে ত্রুটি কেন হয় না?


কারণ

MySQL স্ট্রিংকে স্বয়ংক্রিয়ভাবে INTEGER-এ কনভার্ট করে তুলনা করে। স্ট্রিংয়ের শুরুতে সংখ্যা থাকলে সেই সংখ্যাটি নেয়, নাহলে ০ ধরে।

টেবিল তৈরি এবং ডেটা

mysql> create table DemoTable1852 ( Value1 varchar(20), Value2 int ); Query OK, 0 rows affected (0.00 sec)
mysql> insert into DemoTable1852 values('1John',1); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1852 values('John',1); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1852 values('1',1); Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1852 values('John1',1); Query OK, 1 row affected (0.00 sec)

তুলনায় ফলাফল

mysql> select Value1, Value2, Value1=Value2 as Result from DemoTable1852;
+--------+--------+--------+
| Value1 | Value2 | Result |
+--------+--------+--------+
| 1John  |      1 |      1 |
| John   |      1 |      0 |
| 1      |      1 |      1 |
| John1  |      1 |      0 |
+--------+--------+--------+
4 rows in set, 3 warnings (0.00 sec)

ব্যাখ্যা: '1John' -> ১ (শুরুতে ১ পাওয়া গেলে), 'John' -> ০ (শুরুতে অঙ্ক নেই), '1' -> ১, 'John1' -> ০। MySQL এভাবে ইমপ্লিসিট কনভারশন করে, যা কখনও কখনও অপ্রত্যাশিত ফলাফল দেয়। তাই এক্সপ্লিসিট CAST() ব্যবহার করা ভালো।

  1. MySQL এরর #1046 - কোনো ডাটাবেস নির্বাচন করা হয়নি

  2. MySQL-এ এরর উত্পন্ন করা (SIGNAL ব্যবহার করে)

  3. MySQL-এ ইউজার না থাকলে তৈরি করা (CREATE USER IF NOT EXISTS)

  4. MySQL ডেটাবেস ফাইলগুলো কোথায় স্টোর থাকে? (@@datadir)