MySQL: कॉलम से पूछताछ कैसे करें जिसका प्रकार थोड़ा है?




select bit (5)

हाय मैं हाइबरनेट और माइस्क्ल का उपयोग कर रहा हूँ। मेरे पास 'सक्रिय' नामक बूलियन विशेषता वाला एक वर्ग है।

जेनरेट की गई डेटाबेस तालिका में बीआईटी डेटा प्रकार है। अब तक सब ठीक है। मैं इस मूल्य से पूछना चाहता हूं लेकिन मुझे नहीं पता कि यह कैसे करना है। मैंने कोशिश की

 SELECT * from table where active = 1

काम नहीं करता, न तो निम्नलिखित

 SELECT * from table where active = true

मुझे संदर्भ मैनुअल में और न ही स्टैकव्लोफ में कुछ भी नहीं मिला।

कोई संकेत?

अग्रिम में धन्यवाद!


असल में MySQL अंतर्निहित बिट अक्षर है:

select*from table where active = 0b1

SELECT * FROM table WHERE active = (1)

खैर, तुलना और अद्यतन दोनों के लिए, 0 और 1 मेरे लिए काम:

यहां टाइप बिट (1), एक पंक्ति का एक फ़ील्ड है, फ़ील्ड वर्तमान में गलत है:

mysql> select isfeatured from nodes where isfeatured = 1;
Empty set (0.00 sec)

mysql> select isfeatured from nodes where isfeatured = 0;
+------------+
| isfeatured |
+------------+
|            |
+------------+
1 row in set (0.00 sec)

Isfeatured में 0 से 1 को बदलना अपडेट करें, जो टाइप बिट (1) है ...

mysql> update nodes set isfeatured=1 where isfeatured = 0;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

एक पंक्ति बदल गई ... इसे फिर से प्रयास करें:

mysql> update nodes set isfeatured=1 where isfeatured = 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

अपेक्षित के रूप में कोई पंक्तियां नहीं बदलीं।

पहले के रूप में वही चुनिंदा प्रश्न:

mysql> select isfeatured from nodes where isfeatured = 1;
+------------+
| isfeatured |
+------------+
|           |
+------------+
1 row in set (0.00 sec)

mysql> select isfeatured from nodes where isfeatured = 0;
Empty set (0.01 sec)

देखो, यह काम करता है।

मैं उपयोग कर रहा हूँ:

mysql Ver 14.14 distrib 5.5.31, रेडलाइन 6.2 का उपयोग कर डेबियन-लिनक्स-gnu (x86_64) के लिए

तथा

/ usr / sbin / mysqld Ver 5.5.31-0 + x86_64 (डेबियन) पर डेबियन-लिनक्स-gnu के लिए wheezy1)


बिट मान निर्दिष्ट करने के लिए, b'value 'नोटेशन का उपयोग किया जा सकता है।


इस पृष्ठ के अनुसार, बीआईटी 5.0.3 से पहले संस्करणों के लिए TINYINT (1) का पर्याय है।

क्या आपने ये कोशिश की है?

SELECT * from table where active = (1)
SELECT * from table where active = 'true'
SELECT * from table where active = b'1'

यह ब्लॉग एंट्री बीआईटी डेटा प्रकार से पूरी तरह से बचने का सुझाव देती है।





bit