Z uwagi na ogromną ilość danych generowanych każdego dnia, ważne jest, aby pobierać dane na podstawie kilku warunków. W tym artykule na temat instrukcji CASE w MySQL omówię, jak używać tej instrukcji do pobierania danych o jednym warunku lub wielu warunkach.
W tym artykule zostaną omówione następujące tematy:
- Wprowadzenie do SQL
- Jaki jest cel SQL?
- CASE w MySQL
- Składnia CASE w MySQL
- Przykład CASE w MySQL
Co to jest SQL?
SQL to specyficzny dla domeny język, który jest szeroko stosowany w programowaniu. Jest przeznaczony do zarządzania danymi zawartymi w relacyjnym systemie zarządzania bazami danych (RDBMS) lub do przetwarzania strumieniowego w relacyjnym systemie zarządzania strumieniem danych. Ogólnie rzecz biorąc, SQL jest standardowym językiem, który pomaga przechowywać, manipulować i pobierać dane w bazach danych.
Jaki jest cel SQL?
SQL jest zasadniczo używany do komunikacji z bazą danych. Według ANSI (American National Standards Institute) jest uważany za standardowy język systemów zarządzania relacyjnymi bazami danych (RDBMS). Używamy instrukcji SQL do wykonywania zadań, takich jak aktualizacja, wstawianie, usuwanie lub pobieranie danych z bazy danych.
Co to jest instrukcja CASE w MySQL?
Instrukcja CASE w MySQL jest sposobem obsługi logiki if/else. Jest to rodzaj instrukcji sterującej, która tworzy komórkę języków programowania, ponieważ kontrolują one wykonywanie innych zestawów instrukcji.
Instrukcja CASE przechodzi przez różne warunki i zwraca wartości, gdy pierwszy warunek zostanie spełniony (jak instrukcja IF-THEN-ELSE w językach niskiego poziomu). Gdy warunek jest spełniony, przestanie przechodzić i zwróci wynik. Jeśli żaden z warunków nie jest spełniony, zwraca wartość w klauzuli ELSE.
Jeśli nie ma klauzuli ELSE i żaden z warunków nie jest spełniony, po prostu zwraca NULL.
Składnia instrukcji CASE w MySQL
Podstawowa składnia:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionx THEN resultx ELSE result END;
Istnieją dwa sposoby uzyskania instrukcji CASE-Switch:
- Pobiera zmienną o nazwie case_value i dopasowuje ją do pewnej listy instrukcji.
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END;
- Rozważ opcję search_condition zamiast równości zmiennych i odpowiednio wykonaj instrukcję lista_instrukcji.
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END;
Przykład instrukcji CASE w MySQL
Rozważmy tabelę:STUDENT
Stół ucznia
Identyfikator ucznia | Nazwa | Dział | Płeć |
001 | Akasz | CS | M |
002 | Bikram | Mech | M |
003 | Chandan | CS | M |
004 | Deepak | CS | M |
005 | Elicia | EC | F |
006 | Fernandy | Mech | F |
Przykład: Rozważ scenariusz, w którym musisz zmodyfikować nazwy działów do ich pełnej formy. Jeśli nazwa działu to CS, należy ją przekonwertować na Informatykę; Podobnie Mech powinien zostać przekonwertowany na Mechaniczny, a EC na Elektroniczny i Komunikacyjny.
Przykładowe zapytanie
CASE department_name WHEN 'CS' THEN UPDATE Student SET department='Computer Science'; WHEN 'EC' THEN UPDATE Student SET department='Electronics and Communication'; ELSE UPDATE Student SET department=’Mechanical'; END;
Wyjście:
Odpowiednie nazwy działów zostaną zmienione w następujący sposób:
Identyfikator ucznia | Nazwa | Dział | Płeć |
001 | Akasz | Informatyka | M |
002 | Bikram | Mechaniczny | M |
003 | Chandan | Informatyka | M |
004 | Deepak | Informatyka | M |
005 | Elicia | Elektronika i komunikacja | F |
006 | Fernandy | Mechaniczny | F |
Przykład: Rozważ scenariusz, w którym musisz wybrać wszystkie pola odpowiadające tabeli Student. Ponieważ wartości zapisane w polu Płeć są wartościami jednoznacznymi (M/K), napiszmy zapytanie, które zmieni M na Mężczyzna i F na Kobieta.
Przykładowe zapytanie
SELECT Student ID, Name, Department, CASE Gender WHEN'M' THEN 'Male' WHEN'F' THEN 'Female' END FROM Student;
Wyjście:
Identyfikator ucznia | Nazwa | Dział | Płeć |
001 | Akasz | Informatyka | Mężczyzna |
002 | Bikram | Mechaniczny | Mężczyzna |
003 | Chandan | Informatyka | Mężczyzna |
004 | Deepak | Informatyka | Mężczyzna |
005 | Elicia | Elektronika i komunikacja | Kobieta |
006 | Fernandy | Mechaniczny | Kobieta |
Przełącznik CASE w SQL — sortowanie niestandardowe
Przykładowe zapytanie
CREATE PROCEDURE GetStudent(@ColToSort varchar(150)) AS SELECT StudentID, Name, Gender, Department FROM Student ORDER BY CASE WHEN @ColToSort='Department' THEN Department WHEN @ColToSort='Name' THEN Name WHEN @ColToSort='Gender' THEN Gender ElSE StudentID END;
Wyjście:
Wyniki są sortowane zgodnie z podanym polem.
Powyższa procedura (funkcja) przyjmuje jako argument zmienną typu danych varchar i na tej podstawie sortuje krotki w tabeli Student. Co więcej, możemy również użyć instrukcji CASE do porównania warunków.
Przykład: Rozważ tabelę o nazwie KONTAKTY, która zawiera contactID i websiteID. Zgodnie z tymi szczegółami użytkownik może poruszać się po tych linkach:„TechOnTheNet.com” lub „CheckYourMath.com”.
Przykładowe zapytanie
SELECT CASE WHEN contact_id < 1000 THEN 'TechOnTheNet.com' WHEN website_id = 2 THEN 'CheckYourMath.com' END FROM contacts;
Do tej pory musi być jasne, że podczas pisania instrukcji Case w MySQL jednym z najważniejszych czynników jest „uporządkowanie ich we właściwy sposób”. Pamiętaj tylko, że warunki są oceniane w podanej przez Ciebie kolejności. Gdy dowolny warunek stanie się spełniony, instrukcja CASE zwróci wynik i nie będzie dalej oceniać warunków. Zachowaj więc ostrożność podczas wybierania kolejności, w której podajesz swoje warunki.
Jeśli chcesz dowiedzieć się więcej o MySQL i poznać tę relacyjną bazę danych typu open source, zapoznaj się z naszym szkoleniem certyfikacyjnym MySQL DBA, które obejmuje szkolenie na żywo prowadzone przez instruktora i doświadczenie w projektach życiowych. To szkolenie pomoże ci dogłębnie zrozumieć MySQL i pomoże ci osiągnąć mistrzostwo w tym temacie.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego „Oświadczenia CASE w MySQL”, a my skontaktujemy się z Tobą.