TRUE
और FALSE
कीवर्ड हैं, और उन्हें स्ट्रिंग्स के रूप में उद्धृत नहीं किया जाना चाहिए:
INSERT INTO first VALUES (NULL, 'G22', TRUE);
INSERT INTO first VALUES (NULL, 'G23', FALSE);
उन्हें स्ट्रिंग्स के रूप में उद्धृत करके, MySQL फिर उन्हें उनके पूर्णांक समकक्ष में डाल देगा (क्योंकि बूलियन वास्तव में केवल एक-बाइट INT
हैं। MySQL में), जो किसी भी गैर-संख्यात्मक स्ट्रिंग के लिए शून्य में अनुवाद करता है। इस प्रकार, आपको 0
. मिलता है आपकी तालिका में दोनों मानों के लिए।
गैर-संख्यात्मक स्ट्रिंग शून्य पर डाली गई:
mysql> SELECT CAST('TRUE' AS SIGNED), CAST('FALSE' AS SIGNED), CAST('12345' AS SIGNED);
+------------------------+-------------------------+-------------------------+
| CAST('TRUE' AS SIGNED) | CAST('FALSE' AS SIGNED) | CAST('12345' AS SIGNED) |
+------------------------+-------------------------+-------------------------+
| 0 | 0 | 12345 |
+------------------------+-------------------------+-------------------------+
लेकिन कीवर्ड अपना संबंधित INT
लौटाते हैं प्रतिनिधित्व:
mysql> SELECT TRUE, FALSE;
+------+-------+
| TRUE | FALSE |
+------+-------+
| 1 | 0 |
+------+-------+
यह भी ध्यान दें, कि मैंने आपके डबल-कोट्स को सिंगल कोट्स से बदल दिया है क्योंकि अधिक मानक SQL स्ट्रिंग एनक्लोजर हैं। अंत में, मैंने आपके खाली स्ट्रिंग्स को id
. के लिए बदल दिया है NULL
. के साथ . खाली स्ट्रिंग चेतावनी जारी कर सकती है।