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

एसक्यूएल केस स्टेटमेंट

SQL केस स्टेटमेंट बहुत शक्तिशाली और बहुमुखी है। इसका उपयोग SELECT, UPDATE और INSERT स्टेटमेंट में किया जा सकता है। यहां तक ​​कि इसे ORDER BY और GROUP BY क्लॉज में भी इस्तेमाल किया जा सकता है। आइए एक-एक करके उनकी जांच करें।

सिंटैक्स

सबसे पहले CASE स्टेटमेंट का सिंटैक्स देखें:

CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2

...
WHEN conditionN THEN resultN
ELSE result
END;

डेटा तैयार करना

पहले अपना पसंदीदा डेटाबेस चुनें और "व्यक्तियों" तालिका बनाने और डेटा के साथ पॉप्युलेट करने के लिए प्रश्नों के नीचे चलाएं।

IF OBJECT_ID('Persons', 'U') IS NOT NULL
DROP TABLE Persons;
GO

CREATE TABLE Persons(
name varchar(20)
,age int
,sex varchar(2)
)

GO

INSERT INTO Persons (name,age,sex) values('Bob',5, 'M');
INSERT INTO Persons (name,age,sex) values('Harry',15, 'M');
INSERT INTO Persons (name,age,sex) values('Jasmine',25, 'F');
INSERT INTO Persons (name,age,sex) values('Fanny',65, 'F');
INSERT INTO Persons (name,age,sex) values('Evan',-1, 'N');

GO

चयन कथन

आइए इसे अपने SELECT स्टेटमेंट में इस्तेमाल करें।

SELECT Name, age as 'Actual Age',
CASE
WHEN age >= 0 AND age <= 12 THEN 'CHILD'
WHEN age >= 13 AND age <= 19 THEN 'TEEN AGE'
WHEN age >= 20 AND age <= 40 THEN 'YOUNG'
WHEN age >= 41 AND age <= 60 THEN 'MIDDLE AGE'
WHEN age >= 61 THEN 'OLD'
ELSE 'NOT DEFINED' END as 'New Age using CASE Stmt',
sex as 'Actual Gender',
CASE
WHEN sex = 'M' THEN 'MALE'
WHEN sex = 'F' THEN 'FEMALE'
WHEN sex = 'N' THEN 'DONT WANT TO DISCLOSE'
END as  'New Gender  using CASE Stmt'
FROM Persons

आउटपुट

इन्सर्ट स्टेटमेंट

DECLARE @age INT
DECLARE @sex VARCHAR(10)

SET @age = 40
SET @sex = 'MALE'
INSERT INTO Persons (Name, Age, Sex)
VALUES(
'Jack',
CASE WHEN @age < 0 THEN -1 ELSE @age END,
CASE WHEN @sex = 'MALE' THEN 'M'
WHEN @sex = 'FEMALE' THEN 'F'
ELSE 'N' END
)

आउटपुट

यदि हम अपना पहला SELECT स्टेटमेंट फिर से चलाते हैं, तो आउटपुट होगा:

अद्यतन विवरण

DECLARE @age INT
SET @age = -4

UPDATE Persons SET
age = CASE WHEN @age < 0 THEN -1 ELSE @age END
WHERE Name = 'Bob'

आउटपुट

यदि हम उपरोक्त SELECT स्टेटमेंट को फिर से चलाते हैं, तो आउटपुट होगा:

अनुच्छेद द्वारा आदेश

CASE can be added in ORDER BY clause in above SELECT statement
SELECT Name, age as 'Actual Age',
CASE
WHEN age >= 0 AND age <= 12 THEN 'CHILD'
WHEN age >= 13 AND age <= 19 THEN 'TEEN AGE'
WHEN age >= 20 AND age <= 40 THEN 'YOUNG'
WHEN age >= 41 AND age <= 60 THEN 'MIDDLE AGE'
WHEN age >= 61 THEN 'OLD'
ELSE 'NOT DEFINED' END as 'New Age using CASE Stmt',
sex as 'Actual Gender',
CASE
WHEN sex = 'M' THEN 'MALE'
WHEN sex = 'F' THEN 'FEMALE'
WHEN sex = 'N' THEN 'DONT WANT TO DISCLOSE'
END as  'New Gender  using CASE Stmt'
FROM Persons
ORDER BY
CASE WHEN sex='M' THEN age END,
CASE WHEN sex='F' THEN Name END

आउटपुट

ग्रुप बाय क्लॉज

अब हमारे पहले सेलेक्ट स्टेटमेंट में ग्रुप बाय क्लॉज में केस को एक्सप्लोर करने का समय है:

SELECT
CASE
WHEN age <= 40 THEN 'YOUNG'
WHEN age >= 41 THEN 'OLD'
END as 'New Age using CASE Stmt', COUNT(*)
FROM Persons
GROUP BY CASE
WHEN age <= 40 THEN 'YOUNG'
WHEN age >= 41 THEN 'OLD'
END

आउटपुट

<मजबूत>

हमने अपने आज के केस विषय के सभी मामलों को कवर किया है।

घर पर रहें! सुरक्षित रहें!

यह पहली बार मेरे ब्लॉग में प्रकाशित हुआ था।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उपयोगकर्ता 'DOMAIN\MACHINENAME$' के लिए लॉगिन विफल

  2. आपका SQL सर्वर कितना स्वस्थ है? सक्रिय डेटाबेस निगरानी महत्वपूर्ण है

  3. SQL सर्वर के साथ Lucene.Net कॉन्फ़िगर करें

  4. मैं SQL सर्वर से HTTP अनुरोध कैसे कर सकता हूं?

  5. SQL सर्वर अनुक्रमणिका:प्रमुख आवश्यकताएं, प्रदर्शन प्रभाव और विचार