Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

9,18. kèo bóng đá pháp

Phần này mô tảSQL-Compliant có điều kèo bóng đá pháp có sẵn trongPostgreSQL.

TIP

Nếu nhu cầu của bạn vượt xa khả năng của các kèo bóng đá pháp này, bạn có thể muốn xem xét việc viết một hàm phía máy chủ bằng ngôn ngữ lập trình biểu cảm hơn.

Lưu ý

mặc dùHOUNESCE, vĩ đại nhấtÍt nhất12525_12639Variadicđối số mảng.

9.18.1.case

TheSQL caseBiểu thức là kèo bóng đá pháp chung, tương tự như các câu lệnh IF/ELSE trong các ngôn ngữ lập trình khác:

trường hợp khiđiều kèo bóng đá phápsau đóresult[Khi ...]
     [khácKết quả]
KẾT THÚC

caseCác điều khoản có thể được sử dụng bất cứ nơi nào một biểu kèo bóng đá pháp là hợp lệ. Mỗiđiều kèo bóng đá pháplà một biểu kèo bóng đá pháp trả về ABoolean13619_13682caseBiểu kèo bóng đá pháp làresultĐiều đó theo điều kèo bóng đá pháp và phần còn lại củacaseBiểu kèo bóng đá pháp không được xử lý. Nếu kết quả của điều kiện không đúng, bất kỳ điều gì tiếp theoKhiĐiều khoản được kiểm tra theo cách tương tự. Nếu khôngKhi điều kèo bóng đá phápmang lại sự thật, giá trị củacaseBiểu kèo bóng đá pháp làresultcủakhácmệnh đề. Nếukhác14324_14390

Một ví dụ:

Chọn * từ kiểm tra;

 Một
---
 1
 2
 3

Chọn A,
       Trường hợp khi a = 1 thì 'một'
            Khi a = 2 sau đó 'hai'
            Khác 'Khác'
       KẾT THÚC
    Từ thử nghiệm;

 A | trường hợp
---+-------
 1 | một
 2 | hai
 3 | khác

Các loại dữ liệu của tất cảresultBiểu kèo bóng đá pháp phải được chuyển đổi thành một loại đầu ra duy nhất. Nhìn thấyPhần 10.5Để biết thêm chi tiết.

Có mộtMạnhđơn giảnHồiMẫucaseBiểu kèo bóng đá pháp là một biến thể của dạng chung ở trên:

caseBiểu kèo bóng đá phápKhigiá trịsau đóKết quả[Khi ...]
    [khácKết quả]
KẾT THÚC

Đầu tiên15524_15536được tính toán, sau đó so sánh với từnggiá trịBiểu kèo bóng đá pháp trongKhimệnh đề cho đến khi một được tìm thấy bằng nó. Nếu không tìm thấy trận đấu,resultcủakhácmệnh đề (hoặc giá trị null) được trả về. Điều này tương tự nhưSwitchTuyên bố trong C.

Ví dụ trên có thể được viết bằng cách sử dụng đơn giảncaseCú pháp:

Chọn A,
       Trường hợp a khi 1 sau đó 'một'
              Khi 2 sau đó 'hai'
              Khác 'Khác'
       KẾT THÚC
    Từ thử nghiệm;

 A | trường hợp
---+-------
 1 | một
 2 | hai
 3 | khác

Acase16320_16491

Chọn ... Trường hợp trường hợp khi x < 0 sau đó y/x 1.5 khác kết thúc sai;

Lưu ý

Như được mô tả trongPhần 4.2.1416826_16961caseChỉ đánh giá các biểu hiện phụ cần thiếtkhông phải là sắt. Ví dụ: hằng số1/017159_17266caseARM sẽ không bao giờ được nhập vào thời gian chạy.

9.18.2.HOUNESCE

Coalesce(giá trị[, ...])

TheHOUNESCEHàm trả về các đối số đầu tiên của nó không phải là null. NULL chỉ được trả lại nếu tất cả các đối số là null. Nó thường được sử dụng để thay thế một giá trị mặc định cho các giá trị null khi dữ liệu được truy xuất để hiển thị, ví dụ:

Chọn Hạt (Mô tả, Short_Descrip, '(Không)') ...

Điều này trả vềMô tảNếu nó không phải là NULL, nếu khôngShort_DescripNếu nó không phải là NULL, nếu không(Không).

Tất cả các đối số phải được chuyển đổi thành kiểu dữ liệu chung, sẽ là loại kết quả (xemPhần 10.5Để biết chi tiết).

như AcaseBiểu kèo bóng đá pháp,HOUNESCEChỉ đánh giá các đối số cần thiết để xác định kết quả; Đó là, các đối số ở bên phải của đối số không null đầu tiên không được đánh giá. Chức năng tiêu chuẩn SQL này cung cấp các khả năng tương tựNVLIFNULL, được sử dụng trong một số hệ thống cơ sở dữ liệu khác.

9.18.3.nullif

nullif(Value1, Value2)

ThenullifHàm trả về giá trị null nếuValue1bằngValue2; nếu không thì nó trả vềValue1. Điều này có thể được sử dụng để thực hiện hoạt động nghịch đảo củaHOUNESCEVí dụ đã cho ở trên:

Chọn nullif (value, '(none)') ...

Trong ví dụ này, nếugiá trị(Không), null được trả về, nếu không thì giá trị củagiá trịđược trả về.

Hai đối số phải có các loại tương đương. Cụ thể, chúng được so sánh chính xác như thể bạn đã viếtValue1=Value2, vì vậy phải có một phù hợp=Nhà điều hành có sẵn.

Kết quả có cùng loại với đối số đầu tiên - nhưng có một sự tinh tế. Những gì thực sự được trả lại là đối số đầu tiên của ngụ ý=Nhà điều hành và trong một số trường hợp sẽ được quảng bá để phù hợp với loại đối số thứ hai. Ví dụ,nullif (1, 2.2)sản lượngSố, vì không cóSố nguyên = Sốtoán tử, chỉSố = Số.

9.18.4.vĩ đại nhấtÍt nhất

vĩ đại nhất(giá trị[, ...])
Ít nhất(giá trị[, ...])

Thevĩ đại nhấtÍt nhấtHàm chọn giá trị lớn nhất hoặc nhỏ nhất từ ​​danh sách bất kỳ số lượng biểu kèo bóng đá pháp nào. Tất cả các biểu kèo bóng đá pháp phải được chuyển đổi thành một loại dữ liệu chung, sẽ là loại kết quả (xemPhần 10.5Để biết chi tiết). Các giá trị null trong danh sách bị bỏ qua. Kết quả sẽ chỉ là NULL nếu tất cả các biểu kèo bóng đá pháp đánh giá thành NULL.

Lưu ý rằngvĩ đại nhấtÍt nhấtkhông thuộc tiêu chuẩn SQL, nhưng là một phần mở rộng phổ biến. Một số cơ sở dữ liệu khác làm cho họ trả về NULL nếu bất kỳ đối số nào là null, thay vì chỉ khi tất cả là NULL.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.