Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

IF का उपयोग कैसे करें ... फिर SQL सर्वर में तर्क

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 आम तौर पर उपयोग करने में बहुत आसान होगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जहां क्लॉज IN से पहले और जॉइन या बाद में बेहतर तरीके से निष्पादित होता है

  2. SQL सर्वर में CTE के लिए गाइड

  3. आउटपुट क्लॉज पर फ़िल्टर करें sql

  4. घातक त्रुटि:अपरिभाषित फ़ंक्शन पर कॉल करें sqlsrv_connect ()

  5. मैं SQL तालिका में पंक्ति मानों के बीच परिवर्तनों का पता कैसे लगा सकता हूं और बाध्य कर सकता हूं?