SQL Server có khả năng duy nhất cho phép bạn thực thi logic theo chương trình thời gian thực trên các giá trị trong truy vấn của bạn. Dựa trên những đánh giá logic đó, bạn có thể tạo các giá trị khác nhau như một phần của tập dữ liệu được trả về
Sử dụng câu lệnh CASE
Điều này được thực hiện dễ dàng nhất trong tất cả các phiên bản của SQL Server bằng cách sử dụng câu lệnh
SELECT
books.*
FROM
books
8, hoạt động như một biểu thức logic SELECT
books.*
FROM
books
9 và trả về các giá trị khác nhau tùy thuộc vào kết quảTrong ví dụ dưới đây, chúng tôi muốn trả về một cột
SELECT
books.*
FROM
books
0 bổ sung chỉ định xem cuốn sách của chúng tôi diễn ra ở Trung địa hay Trái đất cũ thông thườngSELECT
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale,
books.*
FROM
books
Trước khi chúng ta xem xét khía cạnh
SELECT
books.*
FROM
books
8 đặc biệt của câu lệnh này, hãy tạm thời loại bỏ SELECT
books.*
FROM
books
8 để nhận thấy rằng bề ngoài đây là một câu lệnh SELECT
books.*
FROM
books
0 cực kỳ đơn giản.SELECT
books.*
FROM
books
Do đó, hãy kiểm tra xem phần
SELECT
books.*
FROM
books
8 được cấu trúc như thế nào và chúng ta đang thực hiện hành vi logic nàoCASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
Để bắt đầu, chúng tôi khởi tạo câu lệnh
SELECT
books.*
FROM
books
8 sau đó chỉ định trong điều kiện nào [SELECT
books.*
FROM
books
3] câu lệnh SELECT
books.*
FROM
books
8 của chúng tôi sẽ đánh giá kết quả. Trong ví dụ này, chúng tôi đang kiểm tra SELECT
books.*
FROM
books
5 và SELECT
books.*
FROM
books
6; . ' Nếu không có trường nào phù hợp với tìm kiếm của chúng tôi, thay vào đó, chúng tôi sẽ trả về giá trị của 'Earth. ’Để sắp xếp lại logic dưới dạng câu lệnh mã giả ________ 19, chúng ta chỉ cần yêu cầu SQL đánh giá
________số 8
Cuối cùng, điều quan trọng cần nhớ là câu lệnh
SELECT
books.*
FROM
books
8 phải luôn được thêm vào cuối cùng với câu lệnh CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
0 phù hợp. Trong ví dụ trên, chúng tôi cũng đổi tên giá trị kết quả được trả về thành SELECT
books.*
FROM
books
0, mặc dù đó chắc chắn là tùy chọnSử dụng Hàm IIF
Nếu bạn đang sử dụng phiên bản SQL hiện đại hơn, sẽ rất hữu ích khi biết rằng SQL Server 2012 đã giới thiệu hàm
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
2 rất tiện dụng. CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
2 là một phương pháp tốc ký để thực hiện câu lệnh CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
4/SELECT
books.*
FROM
books
8 và trả về một trong hai giá trị, tùy thuộc vào việc đánh giá kết quảTái cấu trúc ví dụ trên của chúng tôi để sử dụng
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
2 khá đơn giảnSELECT
books.*
FROM
books
4Với hàm
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
2, chúng tôi thay thế phần lớn rất nhiều cú pháp đường từ câu lệnh SELECT
books.*
FROM
books
8 bằng một vài dấu phẩy đơn giản để phân biệt các đối số của chúng tôiTất cả đã nói, cả
SELECT
books.*
FROM
books
8 và CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
2 đều hoàn thành cùng một công việc, nhưng nếu được lựa chọn, CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
2 thường sẽ đơn giản hơn nhiều để sử dụng