चयन करते समय MySQL BIT फ़ील्ड मान नहीं देख सकता




(4)

my_table में enabled फ़ील्ड है, जिसे इस प्रकार परिभाषित किया गया है: enabled BIT NOT NULL DEFAULT 0

इस तालिका में enabled = b'0' साथ कई पंक्तियाँ हैं, और enabled = b'1' साथ कई पंक्तियाँ हैं।

हालाँकि, यह दोनों:

SELECT * from my_table WHERE enabled = b'0';

और इस:

SELECT * from my_table WHERE enabled = b'1';

enabled कॉलम में रिक्त दिखाएं:

+----+---------+
| id | enabled |
+----+---------+
|  1 |         |
|  2 |         |
+----+---------+

ऐसा क्यों है? मैं enabled फ़ील्ड का मूल्य कैसे देख सकता हूं?

$ mysql --version
mysql  Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (x86_64) using readline 6.1

बिट मान को बाइनरी मान के रूप में लौटाया जाता है। उन्हें मुद्रण योग्य रूप में प्रदर्शित करने के लिए, 0 जोड़ें या BIN () जैसे रूपांतरण फ़ंक्शन का उपयोग करें।

https://dev.mysql.com/doc/refman/5.7/en/bit-field-literals.html


टर्मिनल में आप इसे नहीं देख सकते हैं इसका कारण यह है कि बिट मान गैर प्रिंट करने योग्य वर्ण हैं।

निम्नलिखित मान सम्मिलित करें:

INSERT INTO `my_table` (`ID`, `enabled`)
VALUES (1,b'1'),(2,b'0');

फिर उन्हें फ़ाइल करने के लिए चुनें:

mysql> SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

पहले हमारी /tmp/my_table.txt फ़ाइल को सादे पाठ के रूप में देखने /tmp/my_table.txt :

"1", ""
"2", ""

और फिर हेक्स दृश्य में:

२२ ३१ २२ २ सी २२ ०१ २२ एए २२ ३२ २२ २ सी २२ ०० २२ ए

उन मूल्यों को देखने में सक्षम होने के लिए जिन्हें आप केवल SELECT में CAST कर सकते हैं:

SELECT id, CAST(enabled AS UNSIGNED) AS enabled FROM my_table

और वह निम्न उत्पादन का उत्पादन करेगा:

+----+---------+
| id | enabled |
+----+---------+
|  1 |       1 |
|  2 |       0 |
+----+---------+
2 rows in set (0.00 sec)

सबसे सरल तरीका ORD फ़ंक्शन है:

SELECT ORD(`enabled`) AS `enabled` FROM `my_table`

आप SELECT enabled&1 from my_table भी ट्राई कर सकते हैं।





bit