Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर बिट डेटाटाइप - अल्टीमेट गाइड

बिट डेटा प्रकार का परिचय

डेटा प्रकार एक विशेषता का प्रतिनिधित्व करता है जो पूर्णांक, वर्ण, डेटा समय, बाइनरी डेटा संग्रहीत करता है। मान लीजिए कि आपके पास विभिन्न प्रश्नों के लिए उपयोगकर्ताओं की प्रतिक्रिया रिकॉर्ड करने के लिए एक वेब एप्लिकेशन है। इसमें कई द्विभाजित प्रश्न और कुछ टेक्स्टबॉक्स-आधारित प्रश्न हैं, जैसे कि टिप्पणी। बैकएंड पर, ये प्रतिक्रियाएँ SQL तालिका में संग्रहीत हो जाती हैं।

तालिका को डिज़ाइन करने के लिए, हम कॉलम और डेटाबेस फ़ील्ड प्रकारों को परिभाषित करते हैं। SQL सर्वर विभिन्न डेटा प्रकारों का समर्थन करता है जैसे कि पूर्णांक, चार, varchar (), फ्लोट, दिनांक समय, संख्यात्मक, आदि। इसे T-SQL डेटा प्रकारों पर लागू किया जा सकता है। डेटा प्रकारों के बारे में अधिक जानने के लिए, आधिकारिक दस्तावेज़ीकरण देखें। उपयोग के मामले उन मूल्यों पर निर्भर करते हैं जिन्हें हम उनमें संग्रहित करना चाहते हैं।

मान लीजिए कि हमारे द्वारा बनाई गई तालिका में हमारे पास विशिष्ट कॉलम हैं। वे कॉलम बूलियन मान 1,0 या TRUE\False स्वीकार करते हैं। एसक्यूएल। इसलिए, SQL सर्वर में, एक विशेष बूलियन डेटा प्रकार - बिट प्रदान किया जाता है।

SQL सर्वर बिट एक पूर्णांक डेटा प्रकार है जो 0,1 और NULL मान स्वीकार करता है। यह Azure VM पर Azure SQL सर्वर, Azure प्रबंधित इंस्टेंस और SQL सहित सभी SQL सर्वर संस्करणों में उपलब्ध है।

बिट डेटा टाइप स्टोरेज

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

सिंटैक्स

SQL सर्वर में BIT डेटा प्रकार का सिंटैक्स सीधा है:

 Bit

बिट डेटा प्रकार का व्यावहारिक उपयोग

निम्न T-SQL स्क्रिप्ट एक उत्पाद तालिका बनाती है और उसमें दो उत्पाद डेटा मान सम्मिलित करती है:

  • यदि उत्पाद उपलब्ध है, तो कॉलम [उपलब्ध] बिट 1 पर सेट है।
  • यदि उत्पाद उपलब्ध नहीं है, तो कॉलम [उपलब्ध] बिट 0 पर सेट है।
CREATE TABLE Products (
    [ProductName] varchar(20),
    [Available] BIT
);
Go
INSERT INTO Products (productname,available) values('A',1)
INSERT INTO Products (productname,available) values('B',0)
GO
SELECT * FROM Products

आइए [उत्पाद] तालिका को छोटा करें और TRUE और False स्ट्रिंग्स का उपयोग करके इसके मान डालें।

TRUNCATE TABLE Products
INSERT INTO Products (productname,available) values('A','TRUE')
INSERT INTO Products (productname,available) values('B','False')
GO
SELECT * FROM Products

जैसा कि नीचे दिखाया गया है, SQL सर्वर स्ट्रिंग TRUE को 1 और गलत को 0 में कनवर्ट करता है।

हालाँकि, यदि आप बिट डेटा प्रकार में कोई अन्य मान, जैसे हाँ या नहीं, सम्मिलित करने का प्रयास करते हैं, तो आपको "रूपांतरण विफल" त्रुटि संदेश मिलता है।

INSERT INTO Products (productname,available) values('A','Yes')

जब आप बिट डेटा प्रकार कॉलम में कोई गैर-शून्य मान सम्मिलित करते हैं, तो SQL सर्वर उस मान को एक में बदल देता है। उदाहरण के लिए, निम्नलिखित स्क्रिप्ट में, हम [उपलब्ध] कॉलम में मान 100 सम्मिलित करते हैं। उस दौरान कोई त्रुटि संदेश नहीं होता है।

यदि आप रिकॉर्ड का चयन करते हैं, तो आप पुष्टि करते हैं कि डाला गया मान 1 है।

INSERT INTO Products (productname,available) values('A',100)
SELECT * FROM Products;

इसी तरह, SQL सर्वर बिट कॉलम में ऋणात्मक मान को मान 1 में परिवर्तित करता है। जैसा कि नीचे दिखाया गया है, हम [उपलब्ध] कॉलम में मान -100 डालते हैं। हम इसे प्राप्त करते समय मान एक प्राप्त करते हैं:

INSERT INTO Products (productname,available) values('A',-100)
SELECT * FROM Products;

पहले, हमने उत्पाद उपलब्धता की जाँच के लिए बिट डेटा प्रकार का उपयोग किया था। हमें आमतौर पर बिट्स 1 और 0 के बजाय फ्रंट-एंड पर टेक्स्ट प्रदर्शित करने की आवश्यकता होती है। इसलिए, हम SQL सर्वर में CASE स्टेटमेंट का उपयोग कर सकते हैं।

निम्नलिखित T-SQL कोड में, CASE स्टेटमेंट वापस आता है:

  • मान 1:उत्पाद उपलब्ध है
  • मान 0:स्टॉक में नहीं है
SELECT [ProductName], CASE [Available]
         WHEN 1 then  'Product is available.'
        WHEN 0 then 'Out of Stock'
        ELSE 'NA'
    END AS [Availability]
from products

जैसा कि हम पहले देख सकते थे, SQL सर्वर बिट डेटा प्रकार के लिए भंडारण का अनुकूलन करता है। निम्नलिखित [टेस्टटेबल] में बिट डेटा प्रकार के साथ आठ कॉलम हैं; इसलिए, यह भंडारण के लिए 1 बाइट का उपयोग करता है।

CREATE TABLE TestTable (
    [Column1] Bit,
    [Column2] Bit,
    [Column3] Bit,
    [Column4] Bit,
    [Column5] Bit,
    [Column6] Bit,
    [Column7] Bit,
    [Column8] Bit,
);

वैकल्पिक रूप से, यदि आप टिनींट . का उपयोग करते हैं या चार(1) डेटा प्रकार , यह प्रत्येक कॉलम के लिए 1 बाइट की खपत करेगा। आपको बिट डेटा प्रकार का उपयोग करना चाहिए, जबकि आपको बूलियन मान की आवश्यकता होती है।

आप बिट डेटा प्रकार का उपयोग संग्रहीत कार्यविधियों या फ़ंक्शंस में भी कर सकते हैं जो बूलियन मान लौटाते हैं। उदाहरण के लिए, हमारे पास fn_customer() . है फ़ंक्शन जो ग्राहक आईडी की जांच करता है, और यदि यह मौजूद है, तो यह एक और मान देता है जो यह 0 देता है।

CREATE FUNCTION fn_customer
(
   @CustomerID INT
)
RETURNS bit
AS
BEGIN
IF EXISTS (
SELECT [CustomerID] FROM [SalesLT].[Customer] 
WHERE [CustomerID][email protected] 
)
      RETURN 1
    RETURN 0
 END

इस फ़ंक्शन को इनपुट पैरामीटर के रूप में ग्राहक आईडी की आवश्यकता होती है। अगर हम इसे ग्राहक आईडी 10 के साथ निष्पादित करते हैं, तो आपको निम्न संदेश मिलता है:

IF (dbo.fn_customer(10)=1)
   PRINT 'Customer record is available'
ELSE 
   PRINT 'Customer record is not available'

हालांकि, अगर ग्राहक आईडी [SalesLT] में मौजूद नहीं है।[ग्राहक] तालिका, फ़ंक्शन मान 0 देता है। IF ब्लॉक स्थिति सत्य नहीं है। इसलिए, आपको ELSE क्लॉज में निर्दिष्ट संदेश मिलता है:

निष्कर्ष

MSSQL बूलियन डेटा प्रकार-बिट डेटा प्रकार 0,1 या NULL मान स्वीकार करने वाले स्तंभों के लिए उपयोगी है। SQL सर्वर बिट डेटा प्रकार संग्रहण को अनुकूलित करता है; इसलिए, यह कोड को कॉम्पैक्ट और कुशल बनाता है। इसी तरह, आप इसका उपयोग किसी संग्रहीत कार्यविधि या फ़ंक्शन से बूलियन मानों को वापस करने के लिए कर सकते हैं।

यह भी पढ़ें

शुरुआती के लिए SQL COALESCE फ़ंक्शन के साथ NULL मानों को प्रभावी ढंग से संभालना


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर संग्रहीत कार्यविधि स्रोत को प्रोग्रामेटिक रूप से पुनर्प्राप्त करें जो SQL सर्वर प्रबंधन स्टूडियो gui द्वारा लौटाए गए स्रोत के समान है?

  2. SQL सर्वर:info_schema से विदेशी कुंजी संदर्भ कैसे प्राप्त करें?

  3. SQL सर्वर समांतर डेटावेयरहाउसिंग टीडीएस त्रुटि के लिए कर्सर समर्थन के लिए एक वर्कअराउंड एक कार्यान्वित सुविधा नहीं है

  4. SQL सर्वर में विदेशी कुंजी निर्भरता कैसे खोजें?

  5. प्रत्येक कॉलम के लिए वर्चर (MAX) का उपयोग किए जाने के बावजूद CSV फ़ाइल आयात करते समय SQL सर्वर में त्रुटियाँ