2010-01-24 12 views
6

में तुलना के परिणाम को कैसे संग्रहीत कर सकता हूं, मैं एक सरल कथन प्रिंट (1 = 1) मुद्रित करना चाहता हूं, मुझे उम्मीद है कि परिणाम सत्य या 1 होगा लेकिन SQL सर्वर मुझे बताएगा: ' = '। वह क्यों है?मैं एक परिवर्तनीय

एक ही है कि

declare @test bit 
set @test = (1=1) 

सारांश में की तरह एक बयान के लिए क्या होगा मैं कैसे कर सकते हैं एक यदि कथन का उपयोग

अद्यतन के बिना "देख" क्या एक तुलना से दिया जाता है: कारण मैं पूछ रहा हूँ है क्योंकि मैं डिबग करने के लिए क्यों बयान निम्नलिखित

declare @AgingAmount smallint 
set @AgingAmount = 500 
select Amount, datediff(day,Batch.SubmitDate,getdate()) as Aging from myreporrt 
where datediff(day,Batch.SubmitDate,getdate()) > @AgingAmount 

भी 300 की उम्र बढ़ने के साथ सभी पंक्तियों वापस आ जाएगी कोशिश कर रहा हूँ तो मैं अगर datedi का परीक्षण करना चाहता था एफएफ (दिन, दिनांकित, getdate())> 500 सच या गलत लौटाता है लेकिन इस तुलना के परिणाम को प्रदर्शित करने का तरीका नहीं मिला।

+1

क्या आप उस सटीक क्वेरी का नमूना प्रदान कर सकते हैं जिसे आप निष्पादित करने का प्रयास कर रहे हैं? – toddk

+0

मुझे वास्तव में इस प्रश्न के लिए शीर्षक बदलना चाहिए कि "अगर मैं कथन का उपयोग किए बिना तुलना का परिणाम कैसे प्रदर्शित कर सकता हूं" –

उत्तर

6

हालांकि एसक्यूएल सर्वर एक boolean प्रकार की अवधारणा है, और यह भाव कि IF और WHERE खंड में एक boolean को हल समझता है, यह boolean चर या पैरामीटर की घोषणा का समर्थन नहीं करता। bit डेटा प्रकार boolean अभिव्यक्ति के परिणाम को सीधे संग्रहीत नहीं कर सकता है, भले ही यह संदिग्ध रूप से एक जैसा दिखता हो।

निकटतम आप एक boolean डेटा प्रकार प्राप्त कर सकते हैं

यह है:

-- Store the result of a boolean test. 
declare @result bit 
select @result = case when <boolean expression> then 1 else 0 end 

-- Make use of the above result somewhere else. 
if @result = 1 
    ... 
else 
    ... 

भ्रम को जोड़ने के लिए, एसक्यूएल सर्वर प्रबंधन स्टूडियो bitboolean जैसे परिणाम जब प्रदर्शित व्यवहार करता है, और ADO.NET नक्शे bit को System.Boolean डेटा आगे और आगे गुजरते समय।

अद्यतन: अपने नवीनतम सवाल का जवाब करने के लिए, select बयान में case when ... then 1 else 0 end सिंटैक्स का उपयोग करें।

+1

http://msdn.microsoft.com/en-us/library/ms188074.aspx देखें बूलियन डेटा प्रकार के बारे में "आधिकारिक" पुष्टि घोषणात्मक और न ही असाइन करने योग्य नहीं है। – mjv

+0

शीश, लेकिन धन्यवाद !! SQL सर्वर के साथ पत्थर युग पर वापस – Bart

संबंधित मुद्दे