PostgreSQL: soi kèo bóng đá truoctran liệu: 9 | |||
---|---|---|---|
prev | UP | Chương 9. Các chức năng và toán tử | Tiếp theo |
Phần này mô tả một số cấu trúc chuyên dụng để thực hiện nhiều soi kèo bóng đá truoctran sánh giữa các nhóm giá trị. Các hình thức này có liên quan về mặt cú pháp đến các hình thức truy vấn con của phần trước, nhưng không liên quan đến các nhóm phụ. Các biểu mẫu liên quan đến biểu hiện phụ mảng làPostgreSQLPhần mở rộng; phần còn lại làSQL-Compliant. Tất cả các biểu mẫu biểu thức được ghi lại trong phần này trả về kết quả boolean (true/false).
Biểu thức11214_11221giá trị[, ...])
Phía bên phải là danh sách dấu ngoặc đơn của các biểu thức vô hướng. Kết quả là"true"Nếu kết quả biểu thức bên trái bằng với bất kỳ biểu thức bên phải nào. Đây là một ký hiệu tốc ký cho
Biểu thức=Value1hoặcBiểu thức=value2hoặc ...
11750_11916inXây dựng sẽ là NULL, soi kèo bóng đá truoctran sai. Điều này phù hợp với các quy tắc bình thường của SQL cho các kết hợp boolean của các giá trị null.
Biểu thứcsoi kèo bóng đá truoctran trong (giá trị[, ...])
Phía bên phải là danh sách dấu ngoặc đơn của các biểu thức vô hướng. Kết quả là"True"Nếu kết quả của biểu thức bên trái là soi kèo bóng đá truoctran đồng đều với tất cả các biểu thức bên phải. Đây là một ký hiệu tốc ký cho
Biểu thức<Value1vàBiểu thức<value2và ...
12815_1298112997_13005Xây dựng sẽ là NULL, soi kèo bóng đá truoctran đúng như người ta có thể mong đợi. Điều này phù hợp với các quy tắc bình thường của SQL cho các kết hợp boolean của các giá trị null.
Tip: x soi kèo bóng đá truoctran ở ylà tương đương vớisoi kèo bóng đá truoctran (x in y)Trong mọi trường hợp. Tuy nhiên, các giá trị null có nhiều khả năng vượt qua người mới khi làm việc vớisoi kèo bóng đá truoctran ởhơn khi làm việc vớiin. Tốt nhất là thể hiện tình trạng của bạn một cách tích cực nếu có thể.
Biểu thức Nhà điều hànhany (13873_13891)Biểu thức Nhà điều hànhMột số (Biểu thức soi kèo bóng đá truoctran)
Phía bên phải là biểu thức dấu ngoặc đơn, phải mang lại giá trị mảng. Biểu thức bên trái được đánh giá và soi kèo bóng đá truoctran sánh với từng phần tử của mảng bằng cách sử dụng đã choNhà điều hành, phải mang lại kết quả boolean. Kết quả củaanylà"True"Nếu có được kết quả đúng. Kết quả là"Sai"Nếu không tìm thấy kết quả đúng (bao gồm cả trường hợp soi kèo bóng đá truoctran có phần tử không).
Nếu biểu thức soi kèo bóng đá truoctran mang lại một soi kèo bóng đá truoctran null, kết quả củaanysẽ là NULL. Nếu biểu thức bên trái mang lại NULL, kết quả củabất kỳthường là NULL (mặc dù một toán tử soi kèo bóng đá truoctran sánh không nghiêm ngặt có thể mang lại kết quả khác). Ngoài ra, nếu mảng bên phải chứa bất kỳ phần tử null nào và không có kết quả soi kèo bóng đá truoctran sánh đúng nào, kết quả củaanysẽ là null, không sai (một lần nữa, giả sử một toán tử soi kèo bóng đá truoctran sánh nghiêm ngặt). Điều này phù hợp với các quy tắc bình thường của SQL cho các kết hợp boolean của các giá trị null.
một sốlà từ đồng nghĩa vớibất kỳ.
Biểu thức Nhà điều hànhAll (Biểu thức soi kèo bóng đá truoctran)
Phía bên phải là biểu thức dấu ngoặc đơn, phải mang lại giá trị mảng. Biểu thức bên trái được đánh giá và soi kèo bóng đá truoctran sánh với từng phần tử của mảng bằng cách sử dụng đã choNhà điều hành, phải mang lại kết quả boolean. Kết quả củatất cảlà"True"Nếu tất cả các soi kèo bóng đá truoctran sánh đều có đúng (bao gồm cả trường hợp mảng có các phần tử bằng không). Kết quả là"Sai"Nếu có bất kỳ kết quả sai nào được tìm thấy.
Nếu biểu thức soi kèo bóng đá truoctran mang lại một soi kèo bóng đá truoctran null, kết quả củatất cảsẽ là NULL. Nếu biểu thức bên trái mang lại NULL, kết quả củatất cảthường là null (mặc dù một toán tử soi kèo bóng đá truoctran sánh không nghiêm ngặt có thể mang lại kết quả khác). Ngoài ra, nếu mảng bên phải chứa bất kỳ phần tử null nào và không có kết quả soi kèo bóng đá truoctran sánh sai, kết quả củatất cả16453_16613
Row_Constructor Nhà điều hành Row_Constructor
Mỗi bên là một hàm tạo soi kèo bóng đá truoctran, như được mô tả trongPhần 4.2.13. Hai giá trị hàng phải có cùng một số trường. Mỗi bên được đánh giá và chúng được soi kèo bóng đá truoctran sánh hàng khôn ngoan. soi kèo bóng đá truoctran sánh hàm tạo hàng được cho phép khiNhà điều hànhlà=, <, <, <=, hoặc =17448_17580
Lưu ý:Các lỗi liên quan đến số hoặc loại phần tử có thể không xảy ra nếu soi kèo bóng đá truoctran sánh được giải quyết bằng các cột trước đó.
The=và<Các trường hợp hoạt động hơi khác soi kèo bóng đá truoctran với các trường hợp khác. Hai hàng được coi là bằng nhau nếu tất cả các thành viên tương ứng của họ không có null và bằng nhau; Các hàng là không đồng đều nếu bất kỳ thành viên tương ứng nào không phải là null và không đồng đều; nếu không thì kết quả của soi kèo bóng đá truoctran sánh hàng không rõ (NULL).
cho<, <=, và =Các trường hợp, các phần tử hàng được soi kèo bóng đá truoctran sánh từ trái sang phải, dừng lại ngay khi tìm thấy một cặp phần tử không đồng đều hoặc null. Nếu một trong hai cặp phần tử này là NULL, kết quả của việc soi kèo bóng đá truoctran sánh hàng vẫn chưa được biết (NULL); Nếu không thì soi kèo bóng đá truoctran sánh cặp yếu tố này xác định kết quả. Ví dụ,soi kèo bóng đá truoctran (1,2, null) <soi kèo bóng đá truoctran (1,3,0)mang lại sự thật, soi kèo bóng đá truoctran phải null, vì cặp phần tử thứ ba soi kèo bóng đá truoctran được xem xét.
Lưu ý:trướcPostgreSQL8.2,<, <=, và18952_18959Các trường hợp không được xử lý theo thông số kỹ thuật SQL. Một soi kèo bóng đá truoctran sánh nhưsoi kèo bóng đá truoctran (a, b) <row (c, d)đã được triển khai làA <C và B <Dtrong khi hành vi chính xác tương đương vớiA <C hoặc (A = C và B <D).
Row_Constructorkhác vớiRow_Constructor
Cấu trúc này tương tự như<soi kèo bóng đá truoctran sánh hàng, nhưng nó không mang lại null cho đầu vào null. Thay vào đó, bất kỳ giá trị null nào cũng được coi là không đồng đều với (khác biệt) bất kỳ giá trị không khống nào và bất kỳ hai null nào đều được coi là bằng nhau (không khác biệt). Do đó, kết quả sẽ đúng hoặc sai, không bao giờ vô hiệu.
Row_Constructorsoi kèo bóng đá truoctran khác biệt vớiRow_Constructor
Cấu trúc này tương tự như=soi kèo bóng đá truoctran sánh hàng, nhưng nó không mang lại null cho đầu vào null. Thay vào đó, bất kỳ giá trị null nào cũng được coi là không đồng đều với (khác biệt) bất kỳ giá trị không khống nào và bất kỳ hai null nào đều được coi là bằng nhau (không khác biệt). Do đó, kết quả sẽ luôn đúng hoặc sai, không bao giờ vô hiệu.
Record Nhà điều hành Record
20522_20667PostgreSQLĐiều này chỉ khi soi kèo bóng đá truoctran sánh kết quả của hai hàm tạo hàng (như trongPhần 9.23.5) hoặc soi kèo bóng đá truoctran sánh hàm tạo hàng với đầu ra của trình truy vấn con (như trongPhần 9.22). Trong các bối cảnh khác trong đó hai giá trị loại tổng hợp được soi kèo bóng đá truoctran sánh, hai giá trị trường null được coi là bằng nhau và null được coi là lớn hơn soi kèo bóng đá truoctran với không null. Điều này là cần thiết để có hành vi sắp xếp và lập chỉ mục nhất quán cho các loại tổng hợp.
Mỗi bên được đánh giá và chúng được soi kèo bóng đá truoctran sánh hàng khôn ngoan. soi kèo bóng đá truoctran sánh loại tổng hợp được cho phép khiNhà điều hànhlà=, <, <, <=, hoặc =hoặc có ngữ nghĩa tương tự như một trong số này. .=Thành viên của lớp toán tử B-cây.) Hành vi mặc định của các toán tử trên giống như đối vớilà [soi kèo bóng đá truoctran] khác biệt vớiĐối với các hàm tạo soi kèo bóng đá truoctran (xemPhần 9.23.5).
Để hỗ trợ khớp các hàng bao gồm các phần tử không có lớp toán tử B-cây mặc định, các toán tử sau được xác định để soi kèo bóng đá truoctran sánh loại tổng hợp:*=, *<, *<, *<=, *và* =22395_22900