Hướng dẫn is mysql select case - là trường hợp chọn mysql

Thí dụ

Trải qua các điều kiện và trả về một giá trị khi điều kiện đầu tiên được đáp ứng:

Chọn orderID, số lượng, trường hợp & nbsp; & nbsp; & nbsp; Khi số lượng> 30 thì "Số lượng lớn hơn 30" & nbsp; & nbsp; & nbsp; Khi số lượng = 30 thì "Số lượng là 30" & nbsp; & nbsp; & nbsp; Khác "Số lượng dưới 30" endFrom orderDetails;
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END
FROM OrderDetails;

Hãy tự mình thử »


Định nghĩa và cách sử dụng

Tuyên bố trường hợp trải qua các điều kiện và trả về một giá trị khi điều kiện đầu tiên được đáp ứng (như một câu lệnh if-then-else). Vì vậy, một 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 là đúng, nó sẽ trả về giá trị trong mệnh đề khác.

Nếu không có phần khác và không có điều kiện nào là đúng, nó sẽ trả lại null.

Cú pháp

Trường hợp & nbsp; & nbsp; & nbsp; Khi điều kiện1 thì kết quả1 & nbsp; & nbsp; & nbsp; Khi điều kiện2 thì result2 & nbsp; & nbsp; & nbsp; Khi điều kiện sau đó kết quả & nbsp; & nbsp; & nbsp; Kết quả khác;
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

Giá trị tham số

Tham sốSự mô tả
điều kiện1, điều kiện2, ... điều kiệnYêu cầu. Điều kiện. Chúng được đánh giá theo thứ tự giống như chúng được liệt kê
Kết quả1, kết quả2, ... kết quảYêu cầu. Giá trị để trả lại sau khi một điều kiện là đúng

Chi tiết kỹ thuật

Hoạt động trong:Từ MySQL 4.0

Nhiều ví dụ hơn

SQL sau đây sẽ đặt hàng khách hàng theo thành phố. Tuy nhiên, nếu City là NULL, thì hãy đặt hàng theo quốc gia:

Thí dụ

Chọn Tên tùy chỉnh, Thành phố, CountryFrom Khách hàng theo (Case & NBSP; & NBSP; & NBSP; Khi Thành phố là NULL sau đó là Quốc gia & NBSP; & NBSP; & NBSP; khác CityEnd);
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);

Hãy tự mình thử »



Giả sử ta có bảng dữ liệu như sau:

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

Bây giờ cần lấy những sinh viên có năm sinh trong khoảng từ 1970 đến 1990 thì ta sử lệnh SELECT và ở

field_name BETWEEN begin AND end
3 sử dụng toán tử
field_name BETWEEN begin AND end
4:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

Bài viết này được đăng tại [free tuts .net]

Thay vì sử dụng toán tử

field_name BETWEEN begin AND end
5 thì ta sử dụng toán tử
field_name BETWEEN begin AND end
6 với cú pháp:

Trong đó:

field_name: tên field cần kiểm tra

begin: giá trị bắt đầuCase not found for CASE statement error results.

Each

DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 consists of one or more SQL statements; an empty
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 is not permitted.

To handle situations where no value is matched by any

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
7 clause, use an
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
2 containing an empty
field_name BETWEEN begin AND end
1 block, as shown in this example. (The indentation used here in the
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
2 clause is for purposes of clarity only, and is not otherwise significant.)

DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |

Trong bài này chúng ta tìm hiểu cách sử dụng toán tử BETWEEN trong MySQL để xác định dữ liệu trong một khoảng nào đó. Để select trong khoảng thì ngoài BETWEEN ra ta có thể sử dụng toán tử AND để thay thế, chi tiết thế nào thì chúng ta cùng tìm hiểu nhé.BETWEEN trong MySQL để xác định dữ liệu trong một khoảng nào đó. Để select trong khoảng thì ngoài BETWEEN ra ta có thể sử dụng toán tử AND để thay thế, chi tiết thế nào thì chúng ta cùng tìm hiểu nhé.

Nội dung chính

  • 1. Select trong khoảng với BETWEEN trong MySQL
  • 2. Select ngoài khoảng với BETWEEN trong MySQL
  • 3. Sử dụng BETWEEN với các kiểu dữ liệu khác
  • 4. Lời kết

Vậy, để select trong khoảng nào đó thì ta thường sử dụng

field_name BETWEEN begin AND end
6, tuy nhiên cũng phụ thuộc vào thói quen của mỗi người mà chọn giữa
field_name BETWEEN begin AND end
4 với
field_name BETWEEN begin AND end
6,
field_name BETWEEN begin AND end
5 với
SELECT * FROM SINHVIEN
WHERE NamSinh BETWEEN 1970 AND 1990
2.freetuts.net, không được copy dưới mọi hình thức.

1. Select trong khoảng với BETWEEN trong MySQL

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Giả sử ta có bảng dữ liệu như sau:sử lệnh SELECT và ở

field_name BETWEEN begin AND end
3 sử dụng toán tử
field_name BETWEEN begin AND end
4:

Bây giờ cần lấy những sinh viên có năm sinh trong khoảng từ 1970 đến 1990 thì ta sử lệnh SELECT và ở

field_name BETWEEN begin AND end
3 sử dụng toán tử
field_name BETWEEN begin AND end
4:

SELECT * FROM SINHVIEN
WHERE NamSinh >= 1970 AND NamSinh <= 1990

Bài viết này được đăng tại [free tuts .net]

field_name BETWEEN begin AND end

Thay vì sử dụng toán tử

field_name BETWEEN begin AND end
5 thì ta sử dụng toán tử
field_name BETWEEN begin AND end
6 với cú pháp:
:

  • Trong đó:: tên field cần kiểm tra
  • field_name: tên field cần kiểm tra: giá trị bắt đầu
  • begin: giá trị bắt đầu: giá trị kết thúc

end: giá trị kết thúc

SELECT * FROM SINHVIEN
WHERE NamSinh BETWEEN 1970 AND 1990

Quay lại ví dụ trên ta sẽ viết lại câu

field_name BETWEEN begin AND end
7 như sau:

2. Select ngoài khoảng với BETWEEN trong MySQL

Ngoài cú pháp sử dụng select trong khoảng thì

field_name BETWEEN begin AND end
6 còn có một cách sử dụng là select ngoài khoảng. select trong khoảng thì
field_name BETWEEN begin AND end
6 còn có một cách sử dụng là select ngoài khoảng.

Cú pháp như sau:

field_name NOT BETWEEN begin AND end

Sự khác nhau giữa trong khoang và ngoài khoảng là thêm chữ

field_name BETWEEN begin AND end
9 đằng trước chữ
field_name BETWEEN begin AND end
6.

Quay lại bài trên bây giờ cần lấy danh sách sinh viên có năm sinh không nằm trong khoảng 1970 và 1990 thì ta sẽ làm hai cách như sau:

Cách 1: Sử dụng toán tử

field_name BETWEEN begin AND end
5: Sử dụng toán tử
field_name BETWEEN begin AND end
5

SELECT * FROM SINHVIEN
WHERE NamSinh < 1970 OR NamSinh > 1990

Cách 2: Sử dụng

SELECT * FROM SINHVIEN
WHERE NamSinh BETWEEN 1970 AND 1990
2: Sử dụng
SELECT * FROM SINHVIEN
WHERE NamSinh BETWEEN 1970 AND 1990
2

SELECT * FROM SINHVIEN
WHERE NamSinh NOT BETWEEN 1970 AND 1990

Cả hai ví dụ đều có kết quả như sau:

3. Sử dụng BETWEEN với các kiểu dữ liệu khác

field_name BETWEEN begin AND end
6 thường sử dụng với dữ liệu kiểu
SELECT * FROM SINHVIEN
WHERE NamSinh BETWEEN 1970 AND 1990
4, tuy nhiên bạn vẫn sử dụng được với các kiểu dữ liệu khác như:

  • SELECT * FROM SINHVIEN
    WHERE NamSinh BETWEEN 1970 AND 1990
    5: Tuân theo thứ tự trong bảng mã
    SELECT * FROM SINHVIEN
    WHERE NamSinh BETWEEN 1970 AND 1990
    6
  • SELECT * FROM SINHVIEN
    WHERE NamSinh BETWEEN 1970 AND 1990
    7: Bạn nên sử dụng thêm hàm
    CASE
        WHEN search_condition THEN statement_list
        [WHEN search_condition THEN statement_list] ...
        [ELSE statement_list]
    END CASE
    4 chuyển dữ liệu sang dạng
    SELECT * FROM SINHVIEN
    WHERE NamSinh BETWEEN 1970 AND 1990
    7 để có kết quả chính xác nhất.

Ví dụ 1: Lấy danh sách sinh viên có tên gồm các ký tự trong khoảng 'A' đến 'B': Lấy danh sách sinh viên có tên gồm các ký tự trong khoảng 'A' đến 'B'

SELECT * FROM SINHVIEN
WHERE TenSV BETWEEN 'A' AND 'B'

Ví dụ 2: Giả sử bảng sinh viên thêm cột ngày nhập học. Bây giờ viết câu truy vấn lấy danh sách sinh viên nhập học từ ngày 01/01/2003 đến ngày 01/01/2014 thì ta làm như sau:: Giả sử bảng sinh viên thêm cột ngày nhập học. Bây giờ viết câu truy vấn lấy danh sách sinh viên nhập học từ ngày 01/01/2003 đến ngày 01/01/2014 thì ta làm như sau:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
0

4. Lời kết

Vậy, để select trong khoảng nào đó thì ta thường sử dụng

field_name BETWEEN begin AND end
6, tuy nhiên cũng phụ thuộc vào thói quen của mỗi người mà chọn giữa
field_name BETWEEN begin AND end
4 với
field_name BETWEEN begin AND end
6,
field_name BETWEEN begin AND end
5 với
SELECT * FROM SINHVIEN
WHERE NamSinh BETWEEN 1970 AND 1990
2.

13.6.5.1 CASE Statement

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

Or:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

The

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
4 statement for stored programs implements a complex conditional construct.

For the first syntax,

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
5 is an expression. This value is compared to the
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
6 expression in each
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
7 clause until one of them is equal. When an equal
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
6 is found, the corresponding
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
9 clause
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 executes. If no
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
6 is equal, the
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
2 clause
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 executes, if there is one.

This syntax cannot be used to test for equality with

DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
4 because
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
5 is false. See Section 3.3.4.6, “Working with NULL Values”.

For the second syntax, each

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
7 clause
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
7 expression is evaluated until one is true, at which point its corresponding
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
9 clause
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 executes. If no
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
7 is equal, the
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
2 clause
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 executes, if there is one.

If no

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
6 or
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
7 matches the value tested and the
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
4 statement contains no
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
2 clause, a Case not found for CASE statement error results. Case not found for CASE statement error results.

Each

DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 consists of one or more SQL statements; an empty
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
0 is not permitted.

To handle situations where no value is matched by any

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
7 clause, use an
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
2 containing an empty
SELECT * FROM SINHVIEN
WHERE TenSV BETWEEN 'A' AND 'B'
2 block, as shown in this example. (The indentation used here in the
DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |
2 clause is for purposes of clarity only, and is not otherwise significant.)

DELIMITER |

CREATE PROCEDURE p()
  BEGIN
    DECLARE v INT DEFAULT 1;

    CASE v
      WHEN 2 THEN SELECT v;
      WHEN 3 THEN SELECT 0;
      ELSE
        BEGIN
        END;
    END CASE;
  END;
  |