Postgresql 9.0.23 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 9. 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 cho thực hiện nhiều kèo bóng đá pháp sánh giữa các nhóm giá trị. Những hình thức này có liên quan về mặt cú pháp với các hình thức truy vấn con của trước đó Phần, nhưng không liên quan đến các nhóm phụ. Các hình thức liên quan đến mảng Các biểu hiện phụ làPostgreSQLPhần mở rộng; phần còn lại làSQL-Compliant. Tất cả các hình thức biểu thức được ghi lại trong phần này trả về Boolean (Đúng/Sai) kết quả.
Biểu thứcin (giá trị[, ...])
Phía bên tay phải là danh sách dấu ngoặc đơn của vô hướng biểu cảm. Kết quả là"True"Nếu Kết quả của biểu thức bên trái bằng bất kỳ Biểu thức tay phải. Đây là một ký hiệu tốc ký cho
Biểu thức=Value1hoặcBiểu thức=value2hoặc ...
Lưu ý rằng nếu biểu thức bên trái mang lại NULL hoặc nếu kèo bóng đá pháp có giá trị tay phải bình đẳng và ít nhất một Biểu thức bên phải mang lại NULL, kết quả củainXây dựng sẽ là NULL, kèo bóng đá pháp sai. Đây là trong 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 giá trị null.
Biểu thứckèo bóng đá pháp trong (giá trị[, ...])
Phía bên phải là danh sách dấu ngoặc đơn của vô hướng biểu cảm. Kết quả là"True"Nếu Kết quả biểu thức bên trái là kèo bóng đá pháp đồng đều với tất cả các Biểu thức tay phải. Đây là một ký hiệu tốc ký cho
Biểu thức<value1vàBiểu thức<Value2và ...
Lưu ý rằng nếu biểu thức bên trái mang lại NULL hoặc nếu kèo bóng đá pháp có giá trị tay phải bình đẳng và ít nhất một Biểu thức bên phải mang lại NULL, kết quả củakèo bóng đá pháp ởXây dựng sẽ là NULL, kèo bóng đá pháp đúng như một có thể ngây thơ mong đợi. Điều này phù hợp với bình thường của SQL Quy tắc cho các kết hợp boolean của các giá trị null.
Tip: x kèo bóng đá pháp ở yIS tương đương vớikèo bóng đá pháp (x in y)Trong tất cả trường hợp. Tuy nhiên, các giá trị null có nhiều khả năng đi lên người mới làm việc vớikèo bóng đá pháp ởkèo bóng đá pháp với khi làm việc vớiin. Nó là tốt nhất để 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 toán tửany (Biểu thức kèo bóng đá pháp)Biểu thức Nhà điều hànhMột số (Biểu thức kèo bóng đá pháp)
Phía bên phải là biểu thức dấu ngoặc đơn, mà Phải mang lại một giá trị mảng. Biểu thức bên trái là được đánh giá và kèo bóng đá pháp sánh với từng phần tử của mảng bằng cách sử dụng được choNhà điều hành, mà phải mang lại kết quả boolean. Kết quả củaAnylà"True"Nếu có Kết quả thực sự có được. 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 kèo bóng đá pháp có phần tử bằng không).
Nếu biểu thức kèo bóng đá pháp mang lại một kèo bóng đá pháp null, kết quả củabất kỳsẽ là NULL. Nếu bên trái Biểu thức mang lại null, kết quả củaanythường là NULL (mặc dù không nghiêm ngặt Nhà điều hành kèo bóng đá pháp sánh có thể mang lại một 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 Kết quả kèo bóng đá pháp sánh đúng thu được, kết quả củaAnysẽ là null, không sai (một lần nữa, giả sử a Toán tử kèo bóng đá pháp sánh nghiêm ngặt). Điều này phù hợp với SQL Các quy tắc bình thường cho các kết hợp boolean của các giá trị null.
Một sốlà từ đồng nghĩa vớiany.
Biểu thức Nhà điều hànhAll (Biểu thức kèo bóng đá pháp)
Phía bên tay phải là biểu thức dấu ngoặc đơn, mà Phải mang lại một giá trị mảng. Biểu thức bên trái là được đánh giá và kèo bóng đá pháp sánh với từng phần tử của mảng bằng cách sử dụng được choNhà điều hành, mà phải mang lại kết quả boolean. Kết quả củatất cảlà"True"Nếu tất cả kèo bóng đá pháp sánh mang lại đúng (bao gồm cả trường hợp mảng có các yếu tố 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 kèo bóng đá pháp mang lại một kèo bóng đá pháp null, kết quả củatất cảsẽ là NULL. Nếu bên trái Biểu thức mang lại null, kết quả củatất cảthường là NULL (mặc dù không nghiêm ngặt Nhà điều hành kèo bóng đá pháp sánh có thể mang lại một 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 Kết quả kèo bóng đá pháp sánh sai thu được, kết quả củatất cảsẽ là NULL, không đúng (một lần nữa, giả sử A Toán tử kèo bóng đá pháp sánh nghiêm ngặt). Điều này phù hợp với SQL Các quy tắc bình thường cho các kết hợp boolean của các giá trị null.
Row_Constructor Nhà điều hành ROW_Constructor
Mỗi bên là một hàm tạo kèo bóng đá pháp, như được mô tả trongPhần 4.2.12. Hai giá trị hàng phải có cùng số lượng Cánh đồng. Mỗi bên được đánh giá và chúng được kèo bóng đá pháp sánh hàng khôn ngoan. kèo bóng đá pháp sánh hàng đượ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. (Để cụ thể, một nhà điều hành có thể là một toán tử kèo bóng đá pháp sánh hàng nếu nó là thành viên của cây b lớp toán tử hoặc là người phủ định của=Thành viên của lớp toán tử B-cây.)
The=và<Các trường hợp hoạt động hơi khác với những người 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 là không null và bình đẳng; 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 việc kèo bóng đá pháp sánh hàng vẫn chưa được biết (vô giá trị).
cho<, <=, và =trường hợp, các phần tử hàng là kèo bóng đá pháp sánh từ trái sang phải, dừng lại ngay khi không đồng đều hoặc vô tính Cặp các yếu tố được tìm thấy. Nếu một trong hai cặp yếu tố này là null, kết quả của kèo bóng đá pháp sánh hàng không được biết (null); nếu không thì kèo bóng đá pháp sánh cặp yếu tố này xác định kết quả. Ví dụ,kèo bóng đá pháp (1,2, null) < kèo bóng đá pháp (1,3,0)mang lại sự thật, kèo bóng đá pháp phải null, vì cặp thứ ba các yếu tố kèo bóng đá pháp được xem xét.
Lưu ý:trướcPostgreSQL8.2, The<, <=, và =Các trường hợp không được xử lý cho mỗi SQL đặc điểm kỹ thuật. Một kèo bóng đá pháp sánh nhưkèo bóng đá pháp (a, b) <row (c, d)đã được triển khai làA <C và B <Dtrong khi hành vi đúng là 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ư<kèo bóng đá pháp 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 xem xét không đồng đều với (khác biệt với) bất kỳ giá trị không null nào và bất kỳ hai null được coi là bằng nhau (không khác biệt). Do đó, kết quả sẽ hoặc là đúng hoặc sai, không bao giờ null.
ROW_Constructorkèo bóng đá pháp khác biệt vớiRow_Constructor
Cấu trúc này tương tự như=kèo bóng đá pháp 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 (khác biệt từ) bất kỳ giá trị không null nào và bất kỳ hai null nào đều được xem xét bằng nhau (không khác biệt). Do đó, kết quả sẽ luôn luôn là Đúng hay Sai, không bao giờ null.
Lưu ý:Thông số kỹ thuật SQL yêu cầu hàng khôn ngoan kèo bóng đá pháp sánh với return null nếu kết quả phụ thuộc vào kèo bóng đá pháp sánh hai giá trị null hoặc null và không null.PostgreSQLChỉ làm điều này Khi kèo bóng đá pháp sánh kết quả của hai hàm tạo hàng hoặc kèo bóng đá pháp sánh một hàm tạo hàng với đầu ra của một truy vấn con (như TRONGPhần 9.20). TRONG Các bối cảnh khác trong đó hai giá trị loại tổng hợp kèo bóng đá pháp sánh, hai giá trị trường null được coi là bằng nhau và NULL được coi là lớn hơn một người không null. Đây là cần thiết để có sự sắp xếp và lập chỉ mục nhất quán hành vi cho các loại tổng hợp.