CAST() से BOOL से INT कन्वर्जन
MySQL में BOOL मान (TRUE/FALSE) को INTEGER (1/0) में बदलने के लिए CAST() फंक्शन का उपयोग करें।
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE convertBoolToIntDemo (
-> isYoung BOOL
-> );
डेटा इन्सर्ट करें:
mysql> INSERT INTO convertBoolToIntDemo VALUES(TRUE), (FALSE), (TRUE), (FALSE);
कच्चा डेटा (MySQL BOOL को TINYINT(1) के रूप में स्टोर करता है):
+---------+ | isYoung | +---------+ | 1 | | 0 | | 1 | | 0 | +---------+
स्पष्ट कन्वर्जन के लिए क्वेरी
mysql> SELECT CAST(isYoung = 1 AS SIGNED INTEGER) FROM convertBoolToIntDemo;
परिणाम:
+-----------------------------------+ | CAST(isYoung = 1 AS SIGNED INTEGER) | +-----------------------------------+ | 1 | | 0 | | 1 | | 0 | +-----------------------------------+
व्याख्या:
isYoung = 1- बूलियन तुलना, TRUE/FALSE लौटाता हैCAST(... AS SIGNED INTEGER)- बूलियन को 1/0 इंटीजर में बदलता है
सरल विकल्प
चूंकि MySQL में BOOL वास्तव में TINYINT(1) ही है, ये भी काम करते हैं:
SELECT isYoung + 0 FROM convertBoolToIntDemo; -- 1/0 SELECT CAST(isYoung AS UNSIGNED) FROM convertBoolToIntDemo; -- 1/0 SELECT IF(isYoung, 1, 0) FROM convertBoolToIntDemo; -- स्पष्ट
महत्वपूर्ण: MySQL 8.0+ में DESC या SHOW COLUMNS से BOOL कॉलम TINYINT(1) के रूप में दिखता है, क्योंकि BOOL, TINYINT(1) का समानार्थी (synonym) है।