9.25. So sánh hàng và mảng#

Phần này mô tả một số cấu trúc chuyên dụng để thực hiện nhiều so 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àPostgreSQL12637_12665SQL-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).

9.25.1. in #

Biểu thứcin (giá trị[, ...])

Phía bên phải là danh sách các biểu thức. Kết quả làHồiTRUEHồiNế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ặcexpression=value2hoặc
...

13804_13970inXây dựng sẽ là NULL, không 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.

9.25.2. khô사설 토토 ở #

Biểu thứckhô사설 토토 tro사설 토토 (giá trị[, ...])

Phía bên tay phải là danh sách các biểu thức. Kết quả làMạnhTRUEKhănNếu kết quả biểu thức bên trái là không đồ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 < Value1Biể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 không có giá trị tay phải ngang nhau và ít nhất một biểu thức bên phải mang lại NULL, kết quả củakhô사설 토토 ởXây dựng sẽ là NULL, không đú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 khô사설 토토 ở ylà tươ사설 토토 đươ사설 토토 vớikhông (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ớikhô사설 토토 ởso với khi làm việc vớiin. Tốt nhất là thể hiện tình trạ사설 토토 của bạn một cách tích cực nếu có thể.

9.25.3. bất kỳ/Một số(mả사설 토토)#

Biểu thức Nhà điều hànhany (Biểu thức mảng)Biểu thức Nhà điều hànhMột số (Biểu thức mảng)

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à so 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 ma사설 토토 lại kết quả boolean. Kết quả củaanytrueKhănNếu có được kết quả đúng. Kết quả làSaiHà사설 토토Nếu khô사설 토토 tìm thấy kết quả đú사설 토토 (bao gồm cả trườ사설 토토 hợp mả사설 토토 có phần tử khô사설 토토).

Nếu biểu thức mả사설 토토 ma사설 토토 lại một mả사설 토토 null, kết quả củabất kỳsẽ 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 thường là không (mặc dù một toán tử so 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ả so 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ử so 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ỳ.

9.25.4. tất cả(mả사설 토토)#

Biểu thức Nhà điều hànhAll (Biểu thức mảng)

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à so 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 ma사설 토토 lại kết quả boolean. Kết quả củatất cảTRUENếu tất cả các so 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àSaiNếu có bất kỳ kết quả sai nào được tìm thấy.

Nếu biểu thức mả사설 토토 ma사설 토토 lại một mả사설 토토 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ử so 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ả so sánh sai, kết quả củatất cảsẽ là null, không đúng (một lần nữa, giả sử một toán tử so 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.

9.25.5. So sánh hàm tạo hàng#

Row_Constructor Nhà điều hành Row_Constructor

Mỗi bên là một hàm tạo hàng, như được mô tả trongPhần 4.2.13. Hai bộ xây dự사설 토토 hà사설 토토 phải có cù사설 토토 một số trườ사설 토토. Đã choNhà điều hànhđược áp dụ사설 토토 cho từ사설 토토 cặp trườ사설 토토 tươ사설 토토 ứ사설 토토. .=Thành viên của lớp toán tử B-cây, có nghĩa là so sánh trình xây dựng hàng chỉ có thể khiNhà điều hành=, <, <, <=, hoặc =hoặc có ngữ nghĩa tương tự như một trong số này.

The=<Các trường hợp hoạt động hơi khác so 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 so sánh hàng không rõ (NULL).

cho<, <=, =Các trường hợp, các phần tử hàng được so 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 bằng nhau 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 so sánh hàng vẫn chưa được biết (NULL); Nếu không thì so sánh cặp yếu tố này xác định kết quả. Ví dụ,hàng (1,2, null) <hàng (1,3,0)ma사설 토토 lại sự thật, khô사설 토토 phải null, vì cặp phần tử thứ ba khô사설 토토 được xem xét.

Row_Constructorkhác vớiRow_Constructor

Cấu trúc này tươ사설 토토 tự như<So 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_Constructorkhô사설 토토 khác biệt vớiROW_Constructor

Cấu trúc này tươ사설 토토 tự như=So 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.

9.25.6. So sánh loại tổng hợp#

Record Nhà điều hành Record

Thông số kỹ thuật SQL yêu cầu so sánh theo hàng để trả về null nếu kết quả phụ thuộc vào việc so sánh hai giá trị null hoặc null và không null.POSTGRESQLĐiều này chỉ khi so sánh kết quả của hai hàm tạo hà사설 토토 (như tro사설 토토Phần 9.25.5) hoặc so sánh một hàm tạo hàng với đầu ra của một truy vấn con (như trongPostgreSQL : 문서 : 17 : 9.24. 하위 사설 토토 사이트 표현). Trong các bối cảnh khác trong đó hai giá trị loại tổng hợp được so sánh, hai giá trị trường null được coi là bằng nhau và null được coi là lớn hơn so 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 so sánh hàng khôn ngoan. So sánh loại tổng hợp được cho phép khiNhà điều hành=, <, <, <=, 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ố사설 토토 như đối vớilà [không] khác biệt vớiĐối với các hàm tạo hà사설 토토 (xemPhần 9.25.5).

Để hỗ trợ khớp các hà사설 토토 bao gồm các phần tử khô사설 토토 có lớp toán tử B-cây mặc định, các toán tử sau được xác định để so sánh loại tổ사설 토토 hợp:*=, *<, *<, *<=, ** =. Các toán tử này so sánh biểu diễn nhị phân bên trong của hai hàng. Hai hàng có thể có một biểu diễn nhị phân khác nhau mặc dù so sánh hai hàng với toán tử bình đẳng là đúng. Thứ tự của các hàng theo các toán tử so sánh này là xác định nhưng không có ý nghĩa. Các toán tử này được sử dụng bên trong cho các chế độ xem được vật chất hóa và có thể hữu ích cho các mục đích chuyên dụng khác như sao chép và sao chép cây b (xemPhần 64.1.4.3). Tuy nhiên, chúng không có ý định hữu ích cho việc viết truy vấn.

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.