मैं एक ऐसा दृश्य बनाने की कोशिश कर रहा हूँ जहाँ मैं चाहता हूँ कि एक कॉलम केवल सही या गलत हो। हालाँकि, ऐसा लगता है कि मैं चाहे जो भी करूं, SQL Server (2008) का मानना है कि मेरा बिट कॉलम किसी तरह से अशक्त हो सकता है।
मेरे पास कॉलम "स्थिति" के साथ "उत्पाद" नामक एक तालिका है जो है INT, NULL
। एक दृश्य में, मैं उत्पाद में प्रत्येक पंक्ति के लिए एक पंक्ति लौटना चाहता हूं, यदि उत्पाद में एक BIT कॉलम सही है, तो Product.Status कॉलम 3 के बराबर है, अन्यथा बिट क्षेत्र गलत होना चाहिए।
उदाहरण एसक्यूएल
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
यदि मैं इस क्वेरी को एक दृश्य के रूप में सहेजता हूं और ऑब्जेक्ट एक्सप्लोरर में कॉलम को देखता हूं, तो स्तंभ HasStatus सेट हो जाता है BIT, NULL
। लेकिन इसे कभी NULL नहीं होना चाहिए। क्या कोई जादू एसक्यूएल ट्रिक है जिसका उपयोग मैं इस कॉलम को करने के लिए मजबूर कर सकता हूं NOT NULL
।
ध्यान दें कि, यदि मैं CAST()
चारों ओर हटाता हूं, तो CASE
कॉलम सही तरीके से सेट किया गया है NOT NULL
, लेकिन फिर कॉलम का प्रकार सेट किया गया है INT
, जो कि वह नहीं है। मैं चाहता हूं कि यह हो BIT
। :-)