टी-एसक्यूएल में एक टर्नरी सशर्त ऑपरेटर है?


112

निम्नलिखित क्वेरी को लागू करने के लिए विकल्प क्या हैं:

select *  
from table  
where isExternal = @type = 2 ? 1 : 0

4
बेशक, आपके शीर्षक में आपके द्वारा लिखे गए प्रश्न का उत्तर है - निश्चित रूप से। BETWEENऑपरेटर तीन तर्कों लेने के लिए परिभाषित किया गया है। आप जिस चीज की तलाश कर रहे थे, वह एक सशर्त ऑपरेटर था - जो कि ज्यादातर भाषाओं द्वारा परिभाषित तीन तर्कों को लेने के लिए परिभाषित एकमात्र ऑपरेटर होता है।
डेमियन_इन_अनबेलियर

1
@ जेएफए - नहीं, एक टर्नरी ऑपरेटर कोई भी ऑपरेटर है जो तीन ऑपरेंड लेता है। अधिकांश भाषाओं में, यदि उनके पास कोई टर्नरी ऑपरेटर है, तो यह सामान्य है कि उनके पास केवल एक है, जो (आमतौर पर) सशर्त ऑपरेटर कहलाता है। गलत नाम से चीजों को कॉल करना (या किसी सामान्य नाम का उपयोग करते समय जब आप एक विशिष्ट मतलब रखते हैं) तो बस अधिक भ्रम हो सकता है। आगे मार्गदर्शन के लिए, कृपया टर्नरी-ऑपरेटर टैग विकी से परामर्श करें ।
डेमियन_इन_यूएनबेलिवर


@TimothyKanski - क्या आपको लगता है, मेरी पिछली टिप्पणियों की सामग्री और स्टाइल पर विचार करना (जैसे कि विशेष जोर देना ) a ) कि मैं इस बारे में अनजान हूँ?
डेमियन_इन_यूएनबेलिएवर डेसी २४'१६

6
ओपी ने किसी चीज़ के लिए सामान्य नाम का इस्तेमाल किया, न कि उसके गलत या सामान्य नाम का। मैं आपके निष्कर्ष से असहमत हूं कि पेशेवर (जिनके लिए यह साइट बनाई गई थी) इससे भ्रमित होंगे, जब यह वास्तव में आमतौर पर इस्तेमाल की जाने वाली शब्दावली है।
टिमोथी कांसकी

जवाबों:


122

उपयोग करें case:

select *
from table
where isExternal = case @type when 2 then 1 else 0 end

165

SQL Server 2012 में , आप IIFफ़ंक्शन का उपयोग कर सकते हैं :

SELECT *
FROM table
WHERE isExternal = IIF(@type = 2, 1, 0)

यह भी ध्यान दें: टी-एसक्यूएल में, असाइनमेंट (और तुलना) ऑपरेटर बस =(और नहीं ==- वह C # है)

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