SQL सर्वर में हाँ / नहीं बुलियन फ़ील्ड कैसे बनाते हैं?


328

एक बनाने के लिए सर्वोत्तम तरीका क्या है yes/noयानी Booleanक्षेत्र है जब एक से परिवर्तित access databaseया सामान्य रूप में?

जवाबों:


441

समतुल्य एक BITक्षेत्र है।

में SQLआप का उपयोग 0और 1(Access में सिर्फ एक हाँ के रूप में / कोई क्षेत्र) थोड़ा क्षेत्र स्थापित करने के लिए। प्रबंधन स्टूडियो में यह एक झूठे / सच्चे मूल्य (कम से कम हाल के संस्करणों में) के रूप में प्रदर्शित होता है।

ASP.NET के माध्यम से डेटाबेस तक पहुँचने पर यह बूलियन मान के रूप में क्षेत्र को उजागर करेगा।


3
और यदि आप किसी एक्सेस डेटाबेस में टेबल को लिंक करते हैं, तो ट्रू का मान -1 होगा और गलत का वैल्यू होगा 0. कम से कम एक्सेस 2003 में। (यह वह संस्करण है जो मेरे पास था जो ग्राहक के MSSQL डेटाबेस से जुड़ा था)।
हेनरिक एरलैंडसन

2
कृपया ध्यान दें कि यह बिल्कुल समकक्ष नहीं है। यदि एक स्केलर फ़ंक्शन थोड़ा लौटता है, तो आपको अभी भी परीक्षण करने की आवश्यकता है यदि यह 0 या 1. है। उदाहरण के लिए, dbo.IsReturnsBit (मान) = 1
डैरेन ग्रिफ़िथ

@ डी-पैसा: हाँ, लेकिन आपको केवल तुलना करने की ज़रूरत है यदि आप किसी शर्त में मूल्य का उपयोग करना चाहते हैं। यदि आप परिणाम में मूल्य का उपयोग करते हैं, तो आपको तुलना नहीं करनी चाहिए।
गुफा

Re Mgt Studio, अगर आप कॉपी + पेस्ट करने वाले डेटा को अपने पास रखते हैं तो उसे सही / गलत के रूप में भी होना चाहिए, न कि 1 या 0. के रूप में
gorlaz

110

BITडेटाप्रकार आम तौर पर दुकान करने के लिए प्रयोग किया जाता है boolean(मूल्यों 0के लिए false, 1के लिए true)।


1
है BITएसक्यूएल मानक में निर्दिष्ट? मुझे इसे ढूंढने में मुश्किल समय हो रहा है। निकटतम मैं देख सकता था "बुलियन प्रकार"।
जूल

1
क्या आप सभी चिंतित हैं कि बिट और बूलियन के शब्दार्थ अलग-अलग हैं?
डार्थ एलीगियस


20

आप BITफ़ील्ड का उपयोग कर सकते हैं ।

मौजूदा तालिका में BIT कॉलम जोड़ने के लिए, SQL कमांड इस तरह दिखेगा:

ALTER TABLE table_name ADD yes_no BIT

यदि आप एक नई तालिका बनाना चाहते हैं, तो आप ऐसा कर सकते हैं CREATE TABLE table_name (yes_no BIT):।


19

आप डेटा प्रकार का उपयोग कर सकते हैं bit

डाले गए मान 0 से अधिक हैं जिन्हें '1' के रूप में संग्रहीत किया जाएगा

डाले गए मान जो 0 से कम हैं उन्हें '1' के रूप में संग्रहीत किया जाएगा

'0' के रूप में डाला गया मान '0' के रूप में संग्रहीत किया जाएगा

यह MS SQL सर्वर 2012 एक्सप्रेस के लिए सही है


1
क्या आप 0 से कम मूल्यों के बारे में कथन के बारे में निश्चित हैं?
BiLaL

3
@BiLaL यह अधिकांश भाषाओं में सामान्य व्यवहार है। 0गलत है, कोई भी गैर- 0संख्या सत्य है। -1 के लिए भी सही के लिए डिफ़ॉल्ट मान होना आम बात थी क्योंकि हस्ताक्षरित बाइनरी में यह हर बिट 1 पर सेट है। आजकल यह 1 को सच के लिए डिफ़ॉल्ट मान (केवल सबसे कम महत्वपूर्ण बिट सेट) के रूप में देखने के लिए बहुत आम है।
सीजे डेनिस

16

पहले से ही बिट के उपयोग के उत्तर हैं। मैं इन उत्तरों में और जोड़ दूंगा।

आपको बूलियन मूल्यों का प्रतिनिधित्व करने के लिए बिट का उपयोग करना चाहिए ।

MSDN लेख से टिप्पणी।

बिट 1, 0 या NULL का मान ले सकता है।

SQL सर्वर डेटाबेस इंजन बिट कॉलम के भंडारण का अनुकूलन करता है। यदि किसी तालिका में 8 या कम बिट कॉलम हैं, तो कॉलम 1 बाइट के रूप में संग्रहीत किए जाते हैं। यदि 9 से 16 बिट कॉलम हैं, तो कॉलम 2 बाइट्स के रूप में संग्रहीत किए जाते हैं, और इसी तरह।

TRUE और FALSE मूल्यों को बिट मान में परिवर्तित किया जा सकता है: TRUE को 1 में और FALSE को 0 में परिवर्तित किया जाता है।

बिट में परिवर्तित करना किसी भी गैर-मूल्य को 1 को बढ़ावा देता है।

संदर्भ

नोट: मानों को केवल डेटा प्रकार के साथ 1 और 0 के रूप में रखना अच्छा है NOT NULL

जैसा कि बिट में 1, 0 और NULL का मान है। इसके लिए सत्य सारणी देखें। इसलिए उसी हिसाब से वैल्यू प्लान करें। यह बिट डेटा प्रकार के लिए NULL मान की अनुमति देकर भ्रम को जोड़ सकता है।

यहां छवि विवरण दर्ज करें

संदर्भ


15

तालिका बनाते समय नमूना उपयोग:

[ColumnName]     BIT   NULL   DEFAULT 0

12

आप BITफ़ील्ड का उपयोग कर सकते हैं

नई तालिका बनाने के लिए:

CREATE TABLE Tb_Table1
(
ID              INT,
BitColumn       BIT DEFAULT 1
)

मौजूदा तालिका में कॉलम जोड़ना:

ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1

रिकॉर्ड सम्मिलित करने के लिए:

INSERT Tb_Table1 VALUES(11,0)

9

bitसबसे सरल होगा और कम से कम जगह भी लेगा। "Y / N" की तुलना में बहुत क्रिया नहीं है लेकिन मैं इसके साथ ठीक हूं।


4
यह बेहतर है मुझे लगता है - Y == y और N = n के बारे में चिंता करने की कोई ज़रूरत नहीं है, शुद्ध सच या गलत। इरादा पूरी तरह से स्पष्ट है, और कोई "विशेष" मामले नहीं हैं जो एकल चरित्र फ़ील्ड को आमंत्रित करते हैं :)
रोब ग्रांट

5

bitसबसे उपयुक्त विकल्प है। अन्यथा मैं एक बार intउस उद्देश्य के लिए उपयोग किया जाता था । 1के लिए trueऔर के 0लिए false


2
आम तौर पर इसका उपयोग गलत के लिए 0 और सत्य के लिए गैर-शून्य है।
एडू

2
बहुत से जायके हैं या सच एक अच्छा राजनीतिज्ञ कह सकता है: डी
बुडा फ्लोरिन

1

किसी भी संस्करण के SQL सर्वर प्रबंधन स्टूडियो में, BITडेटा प्रकार के रूप में उपयोग करें

जिसके साथ आप प्रदान करेगा Trueया Falseमूल्य विकल्प। यदि आप केवल उपयोग करना चाहते हैं 1या 0फिर आप इस विधि का उपयोग कर सकते हैं:

CREATE TABLE SampleBit(
    bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
)

लेकिन मैं BITसबसे अच्छे विकल्प के रूप में सख्ती से सलाह दूंगा । पूरी तरह से यह किसी की मदद की उम्मीद है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.