BIT डेटा प्रकार पर GROUP_CONCAT सीधे लागू करने पर बाइनरी/गार्बेज आउटपुट मिलता है। समाधान: कॉलम में +0 जोड़कर संख्यात्मक रूपांतरण करें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1856 (
Id INT,
Value BIT(1)
);
डेटा डालें
mysql> INSERT INTO DemoTable1856 VALUES(101, 1); mysql> INSERT INTO DemoTable1856 VALUES(102, 0); mysql> INSERT INTO DemoTable1856 VALUES(101, 0); mysql> INSERT INTO DemoTable1856 VALUES(102, 1); mysql> INSERT INTO DemoTable1856 VALUES(101, 0);
सीधा GROUP_CONCAT (गार्बेज)
mysql> SELECT GROUP_CONCAT(Value) FROM DemoTable1856 GROUP BY Id;
आउटपुट: अनपढ़ बाइनरी वर्ण (उदाहरण: )
सही तरीका: +0 जोड़ें
mysql> SELECT GROUP_CONCAT(Value + 0) FROM DemoTable1856 GROUP BY Id;
आउटपुट:
+-----------------------+ | GROUP_CONCAT(Value+0) | +-----------------------+ | 1,0,0 | | 0,1 | +-----------------------+
व्याख्या
BIT(1)बाइनरी स्टोर करता है (0x00 या 0x01)।Value + 0संख्यात्मक संदर्भ में बाइनरी को पूर्णांक 0/1 में बदल देता है।GROUP_CONCATअब पठनीय स्ट्रिंग बनाता है।
अन्य विकल्प
CAST(Value AS UNSIGNED)- स्पष्ट कास्टValue + 0- संक्षिप्त, MySQL-विशिष्टCONVERT(Value, UNSIGNED)- मानक SQL
सुझाव
यदि संभव हो तो BIT के बजाय TINYINT(1) या BOOLEAN उपयोग करें; यह अधिक पठनीय और इंडेक्स-अनुकूल है।