При огромно количество данни, които се генерират всеки ден, е важно да се извличат данни въз основа на няколко условия. В тази статия за оператора CASE в MySQL ще обсъдя как да използвам този израз за извличане на данни за едно условие или множество условия.
Следните теми ще бъдат обхванати в тази статия:
- Въведение в SQL
- Каква е целта на SQL?
- CASE в MySQL
- Синтаксис на CASE в MySQL
- Пример за CASE в MySQL
Какво е SQL?
SQL е език, специфичен за домейна, който се използва широко в програмирането. Той е предназначен за управление на данни, съдържащи се в система за управление на релационни бази данни (RDBMS), или за обработка на потоци в система за управление на релационни потоци от данни. Като цяло SQL е стандартен език, който помага за съхраняване, манипулиране и извличане на данни в бази данни.
Каква е целта на SQL?
SQL се използва основно за комуникация с база данни. Според ANSI (American National Standards Institute), той се счита за стандартен език за системи за управление на релационни бази данни (RDBMS). Използваме SQL изрази за изпълнение на задачи като актуализиране, вмъкване, изтриване или извличане на данни от база данни.
Какво е изразът CASE в MySQL?
Изразът CASE в MySQL е начин за работа с логиката if/else. Това е един вид контролен оператор, който формира клетката на езиците за програмиране, тъй като те контролират изпълнението на други набори от оператори.
Изразът CASE преминава през различни условия и връща стойности, когато и първото условие е изпълнено (като оператор IF-THEN-ELSE в езици от ниско ниво). След като условието е вярно, то ще спре да преминава и ще върне резултата. Ако нито едно от условията не е вярно, той връща стойността в клаузата ELSE.
Ако няма клауза ELSE и нито едно от условията не е вярно, тя просто връща NULL.
Синтаксис на израза CASE в MySQL
Основен синтаксис:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionx THEN resultx ELSE result END;
Може да има два начина за постигане на оператори CASE-Switch:
- Взема променлива, наречена case_value и я съпоставя с някакъв списък_изявление.
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END;
- Помислете за условие за търсене вместо равенство на променливата и съответно изпълнете statement_list.
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END;
Пример за израз CASE в MySQL
Нека разгледаме таблица:STUDENT
Ученическа маса
Студентски номер | Име | Отдел | Пол |
001 | Акаш | CS | M |
002 | Бикрам | Механизъм | M |
003 | Чандан | CS | M |
004 | Дийпак | CS | M |
005 | Елисия | EC | F |
006 | Фернандес | Механизъм | F |
Пример: Помислете за сценарий, при който трябва да промените имената на отделите до пълните им форми. Ако името на отдела е CS, то трябва да се преобразува в компютърни науки; По същия начин Mech трябва да се преобразува в механичен. а EC в електронен и комуникационен.
Примерна заявка
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;
Изход:
Съответните имена на отдели се преименуват, както следва:
Студентски номер | Име | Отдел | Пол |
001 | Акаш | Компютърни науки | M |
002 | Бикрам | Механични | M |
003 | Чандан | Компютърни науки | M |
004 | Дийпак | Компютърни науки | M |
005 | Елисия | Електроника и комуникации | F |
006 | Фернандес | Механични | F |
Пример: Помислете за сценарий, при който трябва да изберете всички полета, съответстващи на таблицата Student. Тъй като стойностите, записани в полето Пол, са едносимволни стойности (M/F), нека напишем заявка за промяна на M на Мъжки и F на Женски.
Примерна заявка
SELECT Student ID, Name, Department, CASE Gender WHEN'M' THEN 'Male' WHEN'F' THEN 'Female' END FROM Student;
Изход:
Студентски номер | Име | Отдел | Пол |
001 | Акаш | Компютърни науки | Мъжки |
002 | Бикрам | Механични | Мъжки |
003 | Чандан | Компютърни науки | Мъжки |
004 | Дийпак | Компютърни науки | Мъжки |
005 | Елисия | Електроника и комуникации | Женски |
006 | Фернандес | Механични | Женски |
Превключвател CASE в SQL – персонализирано сортиране
Примерна заявка
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;
Изход:
Изходът се сортира според предоставеното поле.
Горената процедура (функция) приема променлива от тип данни varchar като свой аргумент и на тази основа сортира кортежите в таблицата на Student. Освен това можем да използваме изрази CASE за сравняване на условия.
Пример: Помислете за таблица с име CONTACTS, която съдържа contactID и websiteID. Според тези подробности, потребителят може да навигира през тези връзки:„TechOnTheNet.com“ или „CheckYourMath.com“.
Примерна заявка
SELECT CASE WHEN contact_id < 1000 THEN 'TechOnTheNet.com' WHEN website_id = 2 THEN 'CheckYourMath.com' END FROM contacts;
Досега трябва да е ясно, че докато пишете Case оператори в MySQL, един от най-важните фактори е „да ги подредите по правилния начин“. Само не забравяйте, че условията се оценяват в посочения от вас ред. След като някое условие стане вярно, операторът CASE ще върне резултата и няма да оценява условията повече. Затова бъдете внимателни, докато избирате реда, в който изброявате условията си.
Ако искате да научите повече за MySQL и да се запознаете с тази релационна база данни с отворен код, разгледайте нашето обучение за сертифициране на MySQL DBA, което идва с обучение на живо от инструктор и реално опит от житейски проекти. Това обучение ще ви помогне да разберете MySQL в дълбочина и ще ви помогне да постигнете майсторство по темата.
Имате въпрос към нас? Моля, споменете го в секцията за коментари на това „Изявление на CASE в MySQL“ и ние ще се свържем с вас.