SQL सर्वर में आपकी क्वेरी के भीतर मानों पर रीयल-टाइम प्रोग्रामेटिक लॉजिक निष्पादित करने की अनुमति देने की एक अद्वितीय क्षमता है। उन तार्किक मूल्यांकनों के आधार पर, आप लौटाए गए डेटा सेट के हिस्से के रूप में विभिन्न मान उत्पन्न कर सकते हैं।
केस स्टेटमेंट का उपयोग करना
यह CASE
. का उपयोग करके SQL सर्वर के सभी संस्करणों में सबसे आसानी से पूरा किया जाता है कथन, जो एक तार्किक IF...THEN...ELSE
. के रूप में कार्य करता है परिणाम के आधार पर अभिव्यक्ति और विभिन्न मान लौटाता है।
नीचे दिए गए इस उदाहरण में, हम एक अतिरिक्त locale
लौटाना चाहते हैं स्तंभ जो निर्दिष्ट करता है कि हमारी पुस्तक मध्य-पृथ्वी में घटित होती है या नियमित पुरानी पृथ्वी पर।
SELECT
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale,
books.*
FROM
books
इससे पहले कि हम विशेष CASE
. की जांच करें इस कथन का पहलू, आइए अस्थायी रूप से CASE
. को हटा दें ध्यान दें कि यह एक अत्यंत सरल SELECT
है सतह पर बयान:
SELECT
books.*
FROM
books
इसलिए, आइए देखें कि कैसे CASE
अनुभाग संरचित है और हम कौन सा तार्किक व्यवहार कर रहे हैं।
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
शुरू करने के लिए, हम CASE
. को इनिशियलाइज़ करते हैं कथन तब निर्दिष्ट करें कि किन शर्तों के तहत (WHEN
) हमारा CASE
कथन को परिणाम का मूल्यांकन करना चाहिए। इस उदाहरण में, हम books.title
. की जांच कर रहे हैं और books.primary_author
; यदि या तो हमारी टॉल्किन-एस्क थीम के अनुकूल हो, THEN
हम 'मध्य-पृथ्वी' मान लौटाते हैं। यदि कोई भी फ़ील्ड हमारी खोज से मेल नहीं खाता है, तो हम इसके बजाय 'पृथ्वी' का मान लौटाते हैं।
तर्क को छद्म कोड के रूप में पुनर्व्यवस्थित करने के लिए IF...THEN...ELSE
कथन, हम केवल SQL को मूल्यांकन करने के लिए कह रहे हैं:
IF
title == 'The Hobbit' OR
primary_author == 'Tolkien'
THEN
RETURN 'Middle-earth'
ELSE
RETURN 'Earth'
END
अंत में, यह याद रखना महत्वपूर्ण है कि एक CASE
स्टेटमेंट को हमेशा अंत में एक मैचिंग END
. के साथ जोड़ा जाना चाहिए बयान। उपरोक्त उदाहरण में, हम परिणामी मान का नाम भी बदल रहे हैं जो locale
. पर वापस आ गया है , हालांकि यह निश्चित रूप से वैकल्पिक है।
IIF फ़ंक्शन का उपयोग करना
यदि आप SQL के अधिक आधुनिक संस्करण का उपयोग कर रहे हैं, तो यह जानना उपयोगी है कि SQL Server 2012 ने बहुत ही आसान IIF
पेश किया है। समारोह। IIF
IF...ELSE
. करने के लिए शॉर्टहैंड विधि है /CASE
बयान और परिणाम के मूल्यांकन के आधार पर दो में से एक मान लौटाना।
IIF
. का उपयोग करने के लिए हमारे उपरोक्त उदाहरण का पुनर्गठन काफी सरल है।
SELECT
IIF(
books.title = 'The Hobbit' OR books.primary_author = 'Tolkien',
'Middle-earth',
'Earth')
AS locale,
books.*
FROM
books
एक IIF
. के साथ फ़ंक्शन, हम काफी हद तक CASE
. से बहुत सी वाक्यात्मक चीनी को प्रतिस्थापित करते हैं हमारे तर्कों में अंतर करने के लिए कुछ सरल अल्पविराम से युक्त कथन।
सभी ने बताया, दोनों CASE
और IIF
वही काम करवाएं, लेकिन अगर विकल्प दिया जाए, तो IIF
आम तौर पर उपयोग करने में बहुत आसान होगा।