আসলে, তারা উভয়ই অ্যাসাইনমেন্ট অপারেটর এবং মান নির্ধারণ করতে ব্যবহৃত হয় তবে তাদের মধ্যে উল্লেখযোগ্য পার্থক্য নিম্নরূপ -
=অপারেটর একটি মান নির্ধারণ করে SET স্টেটমেন্টের একটি অংশ হিসাবে বা একটি আপডেট স্টেটমেন্টে SET ক্লজের একটি অংশ হিসাবে, অন্য যেকোনো ক্ষেত্রে =অপারেটরকে একটি তুলনা অপারেটর হিসাবে ব্যাখ্যা করা হয়। অন্যদিকে, :=অপারেটর একটি মান নির্ধারণ করে এবং এটিকে কখনই তুলনা অপারেটর হিসাবে ব্যাখ্যা করা হয় না।
mysql> Update estimated_cost1 SET Tender_value = '8570.000' where id = 2; Query OK, 1 row affected (0.06 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> Update estimated_cost1 SET Tender_value := '8575.000' where id = 2; Query OK, 1 row affected (0.06 sec) Rows matched: 1 Changed: 1 Warnings: 0
উপরের দুটি প্রশ্নে, আমরা টেবিলের মান আপডেট করার জন্য =অপারেটর পাশাপাশি:=অপারেটর ব্যবহার করেছি।
mysql> Set @A = 100; Query OK, 0 rows affected (0.01 sec) mysql> Select @A; +------+ | @A | +------+ | 100 | +------+ 1 row in set (0.00 sec) mysql> Set @B := 100; Query OK, 0 rows affected (0.00 sec) mysql> Select @B; +------+ | @B | +------+ | 100 | +------+ 1 row in set (0.00 sec)
উপরের দুটি প্রশ্নে, আমরা ব্যবহার করেছি =অপারেটর এবং:=অপারেটর একটি ব্যবহারকারীর ভেরিয়েবলের মান নির্ধারণ করতে। আমরা দেখতে পাচ্ছি যে উভয় পরিস্থিতিতে =অপারেটর এবং:=অপারেটরের ব্যবহার এবং কার্যকারিতা একই। কিন্তু নিম্নলিখিত ক্যোয়ারী =অপারেটর, একটি তুলনা অপারেটর হিসাবে কাজ করে এবং ফলাফলটি 'TRUE' হিসাবে দেয় অর্থাৎ ব্যবহারকারীর ভেরিয়েবল @A এবং @B উভয়েরই একই মান রয়েছে।
mysql> Select @A = @B; +---------+ | @A = @B | +---------+ | 1 | +---------+ 1 row in set (0.00 sec)