समस्या: BIT कॉलम खाली/अप्रिंटेबल दिखता है
MySQL में BIT डेटा प्रकार बाइनरी डेटा संग्रहीत करता है। SELECT * चलाने पर यह **खाली या अनप्रिंटेबल कैरेक्टर** दिखाता है क्योंकि क्लाइंट बाइनरी बाइट्स को टेक्स्ट के रूप में प्रदर्शित करने का प्रयास करता है।
समाधान: +0 या CAST से पूर्णांक में बदलें
SELECT yourBitColumnName + 0 FROM yourTableName;
या:
SELECT CAST(yourBitColumnName AS UNSIGNED) FROM yourTableName;
व्यावहारिक उदाहरण
1. BIT टेबल बनाएं
mysql> CREATE TABLE BitDemo (
-> hasValidId BIT NOT NULL
-> );
Query OK, 0 rows affected (1.21 sec)
2. डेटा डालें
mysql> INSERT INTO BitDemo VALUES(1);
mysql> INSERT INTO BitDemo VALUES(0);
3. डिफ़ॉल्ट SELECT (खाली दिखता है)
mysql> SELECT * FROM BitDemo;
+------------+
| hasValidId |
+------------+
| |
| |
+------------+
2 rows in set (0.00 sec)
4. +0 से मूल मान प्राप्त करें
mysql> SELECT hasValidId + 0 FROM BitDemo;
+--------------+
| hasValidId+0 |
+--------------+
| 1 |
| 0 |
+--------------+
2 rows in set (0.00 sec)
क्यों काम करता है?
BITसंख्यात्मक प्रकार है (बिट-फील्ड)+ 0संख्यात्मक संदर्भ बाध्य करता है, बाइनरी→पूर्णांक रूपांतरण ट्रिगर करता हैCAST(... AS UNSIGNED)स्पष्ट रूप से समान काम करता है
BIT(1) vs BOOLEAN
MySQL में BOOLEAN / BOOL वास्तव में TINYINT(1) का पर्याय है, BIT(1) नहीं।
| प्रकार | भंडारण | प्रदर्शन | उपयोग |
|---|---|---|---|
BIT(1) | 1 बिट | बाइनरी (क्लाइंट पर खाली) | कॉम्पैक्ट बिटमास्क |
TINYINT(1) / BOOL | 1 बाइट | 0/1 (सामान्य) | सामान्य बूलियन फ्लैग |
सिफारिश
सामान्य बूलियन फ्लैग के लिए TINYINT(1) या BOOLEAN उपयोग करें। BIT केवल तभी जब बिट-स्तरीय पैकिंग आवश्यक हो (जैसे 64 फ्लैग एक BIT(64) में)।