Scenariusz:
Pracujesz jako programista SQL Server, musisz wykonać zapytanie do tabeli dbo.Customer zawierającej kolumnę CountryShortName ze skrótami krajów. Chcesz wygenerować kolejne kolumny z pełną nazwą kraju, używając wartości kolumny CountryShortName. Jak byś to zrobił?Rozwiązanie:
Możesz użyć wyrażeń Case, aby wygenerować tę nową kolumnę w zależności od wartości CountryShortName. W naszym przykładzie używamy tylko pojedynczych kolumn, ale możesz użyć wielu kolumn i sprawdzić wiele warunków.Utwórzmy tabelę dbo.Customer z przykładowymi danymi, a następnie napiszemy naszą instrukcję Select z wyrażeniem Case.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2)) GO insert into dbo.Customer Values ( 1,'Raza','M','PK'), (2,'Rita','John','US'), (3,'Sukhi','Singh',Null)
1) Możesz użyć nazwy kolumny, dla której chcesz sprawdzić wartości zaraz po wielkości liter, jak pokazano poniżej. Następnie wpisz wszystkie warunki w tej kolumnie i na koniec użyj End jako NewColumnName
Select FName, LName, CountryShortName, Case CountryShortName When 'Pk' Then 'Pakistan' When 'US' Then 'United States of America' When 'IN' Then 'India' Else 'Not Provided' End AS CountryFullName From dbo.Customer
Jak używać instrukcji Case w SQL Server — samouczek SQL Server / TSQL |
Jeśli nie lubisz używać Else part, możesz to usunąć, ale w przypadku, gdy będziesz miał wartość i nie pasuje do twoich warunków, zwróci wartość Null. W moim przypadku, jeśli wartość nie jest zgodna z moimi warunkami, chciałbym wyświetlić jako „Nie podano” przy użyciu części Inna.
2) Nie używaj nazwy kolumny bezpośrednio po słowie kluczowym Case Możesz również napisać opis przypadku, jak pokazano poniżej. W poniższym przykładzie nie wpisaliśmy nazwy kolumny zaraz po literze Case. W tym przypadku musimy wpisać kolumnę po każdym When. Ten sposób pisania jest używany, gdy chcesz sprawdzić warunki dla wielu kolumn lub zakresu wartości.
Select FName, LName, CountryShortName, Case When CountryShortName='Pk' Then 'Pakistan' When CountryShortName='US' Then 'United States of America' When CountryShortName='IN' Then 'India' Else 'Not Provided' End AS CountryFullName From dbo.Customer
Jak używać instrukcji Case do formatowania warunkowego w zapytaniu SQL — samouczek SQL Server / TSQL |