Trường hợp mysql trong mệnh đề where

Với lượng dữ liệu khổng lồ được tạo ra mỗi ngày, điều quan trọng là phải truy xuất dữ liệu dựa trên một số điều kiện. Trong bài viết về câu lệnh CASE trong MySQL này, mình sẽ trình bày về cách sử dụng câu lệnh này, để lấy dữ liệu theo một điều kiện hay nhiều điều kiện

Trường hợp mysql trong mệnh đề where
Các chủ đề sau sẽ được đề cập trong bài viết này

SQL là gì?

SQL là ngôn ngữ dành riêng cho miền được sử dụng rộng rãi trong lập trình. Nó được thiết kế để quản lý dữ liệu chứa trong hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) hoặc để xử lý luồng trong hệ thống quản lý luồng dữ liệu quan hệ. Tôi nói chung, SQL là một ngôn ngữ chuẩn giúp lưu trữ, thao tác và truy xuất dữ liệu trong cơ sở dữ liệu

Mục đích của SQL là gì?

SQL về cơ bản được dùng để giao tiếp với cơ sở dữ liệu. Theo ANSI (Viện tiêu chuẩn quốc gia Hoa Kỳ), nó được coi là ngôn ngữ chuẩn cho các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Chúng tôi sử dụng câu lệnh SQL để thực hiện các tác vụ như cập nhật, chèn, xóa hoặc truy xuất dữ liệu từ cơ sở dữ liệu

Câu lệnh CASE trong MySQL là gì?

Câu lệnh CASE trong MySQL là một cách xử lý logic if/else. Nó là một loại câu lệnh điều khiển hình thành tế bào của ngôn ngữ lập trình khi chúng điều khiển việc thực thi các tập hợp câu lệnh khác

Câu lệnh CASE trải qua các điều kiện khác nhau và trả về các giá trị khi điều kiện đầu tiên được đáp ứng (giống như câu lệnh IF-THEN-ELSE trong các ngôn ngữ cấp thấp). Khi một điều kiện là đúng, nó sẽ dừng duyệt và trả về kết quả. Nếu không có điều kiện nào đúng, nó sẽ trả về giá trị trong mệnh đề ELSE

Nếu không có mệnh đề ELSE và không có điều kiện nào đúng, nó chỉ trả về NULL

Cú pháp câu lệnh CASE trong MySQL

Cú pháp cơ bản

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionx THEN resultx
    ELSE result
END;

Có thể có hai cách để đạt được các câu lệnh CASE-Switch

  • Lấy một biến có tên là case_value và khớp nó với một số statement_list
CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END;
  • Xem xét một điều_kiện_tìm_kiếm thay vì đẳng thức của biến và thực hiện câu lệnh_danh_sách tương ứng.  
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END;

Ví dụ về câu lệnh CASE trong MySQL

Hãy xem xét một bảng. SINH VIÊN

bàn học sinh

ID sinh viên Tên KhoaGiới tính001AkashCSM002BikramMechM003ChandanCSM004DeepakCSM005EliciaECF006FernandesMechF

Thí dụ. Xem xét một kịch bản, trong đó bạn phải sửa đổi tên bộ phận thành dạng đầy đủ của chúng. Nếu tên bộ phận là CS, nó sẽ được chuyển đổi thành Khoa học máy tính; . và EC sang Điện tử và Truyền thông

Truy vấn mẫu

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;

đầu ra

Tên bộ phận tương ứng được đổi tên như sau

ID sinh viên Tên KhoaGiới tính001AkashKhoa học máy tínhM002BikramCơ khíM003ChandanKhoa học máy tínhM004DeepakKhoa học máy tínhM005Elicia Điện tử và Truyền thông F006FernandesCơ khíF

Thí dụ. Hãy xem xét một kịch bản, trong đó bạn phải chọn tất cả các trường tương ứng với bảng Sinh viên. Vì các giá trị được viết trong trường Giới tính là các giá trị ký tự đơn (M/F), nên chúng ta hãy viết một truy vấn để thay đổi M thành Nam và F thành Nữ

Truy vấn mẫu

SELECT Student ID, Name, Department,
CASE Gender
 WHEN'M' THEN 'Male'
 WHEN'F' THEN 'Female'
END
FROM Student;

đầu ra

ID sinh viên Tên KhoaGiới tính001AkashKhoa học máy tínhNam002BikramCơ khíNam003ChandanKhoa học máy tínhNam004DeepakKhoa học máy tínhNam005EliciaĐiện tử và truyền thôngNữ006FernandesCơ khíNữ

CASE Switch trong SQL- Sắp xếp tùy chỉnh

Truy vấn mẫu

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;

đầu ra

Đầu ra được sắp xếp theo trường được cung cấp

Thủ tục (hàm) trên lấy một biến kiểu dữ liệu varchar làm đối số, trên cơ sở đó sắp xếp các bộ trong bảng Student. Ngoài ra, chúng ta cũng có thể sử dụng câu lệnh CASE để so sánh các điều kiện

Thí dụ. Hãy xem xét một bảng có tên LIÊN HỆ chứa contactID và websiteID. Theo các chi tiết này, người dùng có thể điều hướng qua các liên kết này. ‘TechOnTheNet. com’ hoặc ‘CheckYourMath. com’

Truy vấn mẫu

SELECT
CASE
  WHEN contact_id < 1000 THEN 'TechOnTheNet.com'
  WHEN website_id = 2 THEN 'CheckYourMath.com'
END
FROM contacts;

Bây giờ rõ ràng là trong khi viết các câu lệnh Case trong MySQL, một yếu tố quan trọng nhất là 'sắp xếp chúng theo đúng cách'. Chỉ cần nhớ rằng các điều kiện được đánh giá theo thứ tự được liệt kê bởi bạn. Khi bất kỳ điều kiện nào trở thành đúng, câu lệnh CASE sẽ trả về kết quả và không đánh giá các điều kiện nữa. Vì vậy, hãy cẩn thận trong khi chọn thứ tự mà bạn liệt kê các điều kiện của mình trong

Nếu bạn muốn tìm hiểu thêm về MySQL và tìm hiểu cơ sở dữ liệu quan hệ mã nguồn mở này, hãy xem Đào tạo chứng chỉ MySQL DBA của chúng tôi đi kèm với đào tạo trực tiếp do người hướng dẫn hướng dẫn và trải nghiệm dự án thực tế. Khóa đào tạo này sẽ giúp bạn hiểu sâu về MySQL và giúp bạn thành thạo chủ đề này

Có một câu hỏi cho chúng tôi?

Tôi có thể sử dụng chữ hoa chữ thường trong mệnh đề WHERE không?

Case có thể được sử dụng trong bất kỳ câu lệnh hoặc mệnh đề nào cho phép biểu thức hợp lệ . Ví dụ: bạn có thể sử dụng CASE trong các câu lệnh như SELECT, UPDATE, DELETE và SET cũng như trong các mệnh đề như select_list, IN, WHERE, ORDER BY và HAVING.

Chúng ta có thể sử dụng câu lệnh CASE trong MySQL không?

Câu lệnh CASE của MySQL . Vì vậy, khi một điều kiện là đúng, nó sẽ ngừng đọc và trả về kết quả. Nếu không có điều kiện nào đúng, nó sẽ trả về giá trị trong mệnh đề ELSE. The CASE statement goes through conditions and returns a value when the first condition is met (like an if-then-else statement). So, once a condition is true, it will stop reading and return the result. If no conditions are true, it returns the value in the ELSE clause.

Chúng ta có thể sử dụng mệnh đề CASE IN FROM trong SQL không?

Không, bạn không thể chọn một bảng để truy vấn bằng câu lệnh CASE . Các câu lệnh CASE chỉ nằm trong các biểu thức, chẳng hạn như đối với giá trị của cột hoặc là một phần của biểu thức WHERE của bạn.

MySQL có phân biệt chữ hoa chữ thường trong các truy vấn không?

Tên bảng được lưu trữ bằng chữ thường trên đĩa và so sánh tên không phân biệt chữ hoa chữ thường . MySQL chuyển đổi tất cả các tên bảng thành chữ thường khi lưu trữ và tra cứu. Hành vi này cũng áp dụng cho tên cơ sở dữ liệu và bí danh bảng.