Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам изявление CASE в MySQL?

При огромно количество данни, които се генерират всеки ден, е важно да се извличат данни въз основа на няколко условия. В тази статия за оператора 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
&nbsp;&nbsp;WHEN contact_id < 1000 THEN 'TechOnTheNet.com'
&nbsp;&nbsp;WHEN website_id = 2 THEN 'CheckYourMath.com'
END
FROM contacts;

Досега трябва да е ясно, че докато пишете Case оператори в MySQL, един от най-важните фактори е „да ги подредите по правилния начин“. Само не забравяйте, че условията се оценяват в посочения от вас ред. След като някое условие стане вярно, операторът CASE ще върне резултата и няма да оценява условията повече. Затова бъдете внимателни, докато избирате реда, в който изброявате условията си.

Ако искате да научите повече за MySQL и да се запознаете с тази релационна база данни с отворен код, разгледайте нашето обучение за сертифициране на MySQL DBA, което идва с обучение на живо от инструктор и реално опит от житейски проекти. Това обучение ще ви помогне да разберете MySQL в дълбочина и ще ви помогне да постигнете майсторство по темата.

Имате въпрос към нас? Моля, споменете го в секцията за коментари на това „Изявление на CASE в MySQL“ и ние ще се свържем с вас.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL избира само редове с максимална стойност в колона

  2. Заявка за получаване на всички редове от предходния месец

  3. Кога трябва да използвам съставен индекс?

  4. Имената на таблици в MySQL чувствителни ли са малките букви?

  5. Virtualmin:Нямате достъп до тази MySQL база данни след промяна на паролата