मैं बस एक प्रक्रिया के साथ एक दिलचस्प समस्या में आया जो मैं एसक्यूएल में लिख रहा हूं।एसक्यूएल डेट वैरिएबल की तुलना में शून्य तरीके से तुलना क्यों करें?
मेरी प्रो में मेरे पास 2 तिथियां हैं, जो वैकल्पिक पैरा को न्यूल में डिफॉल्ट किया गया है, मैं यह जांचना चाहता हूं कि ये पैराम शून्य नहीं हैं और यदि मेरी proc का हिस्सा नहीं चलाया जाता है, तो यदि वे शून्य हैं तो proc के अतिरिक्त भाग अनदेखा किया जाता है।
मैं एक काफी बुनियादी IF(@dateVariable <> NULL AND @DateVariable2 <> NULL)
बयान किया था, लेकिन अगर बयान कभी नहीं काम करता है, भले ही चर रिक्त नहीं कर रहे हैं, मैं एसक्यूएल एक शून्य जो अजीब है, क्योंकि datetime व्यर्थ है करने के लिए तिथि की तुलना करने के लिए संघर्ष कर रहा है ग्रहण करेंगे।
इस के आसपास पाने के लिए मैंने अभी IF(DateVariable IS NOT NULL)
किया जो सही तरीके से काम करता है। मैंने IF(ISNULL(@DateVariable,'') <> '')
भी सही तरीके से काम किया है जो
तो मेरा सवाल यह है कि पहला IF क्यों काम नहीं करता है, लेकिन दूसरा और तीसरा IF दोनों बिंदुओं को किसी बिंदु पर चर की सामग्री की तुलना में शून्य से तुलना करना चाहिए?
उदाहरण:
----- विफल -----
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (@Date <> NULL)
BEGIN
print('a')
END
----- काम करता है -----
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (ISNULL(@Date,'') <> '')
BEGIN
print('a')
END
DECLARE @Date DATETIME
SET @Date = CURRENT_TIMESTAMP
IF (@Date IS NOT NULL)
BEGIN
print('a')
END
[तीन वैल्यूड लॉजिक] (http://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued -लोगिक /) –
'नूल' के बारे में 'अज्ञात फिर भी मूल्य' के रूप में सोचें। '@Date = अज्ञात फिर भी मूल्य' उपज क्या होनी चाहिए? 'TRUE'? 'FALSE'? या 'हम नहीं जानते'? –