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

10.2. Người vận soi kèo bóng đá truoctran#

toán tử cụ thể được tham chiếu bởi biểu thức toán tử được xác định bằng cách sử dụng quy trình sau. Lưu ý rằng thủ tục này bị ảnh hưởng gián tiếp bởi sự ưu tiên của soi kèo bóng đá truoctran toán tử liên quan, vì điều đó sẽ xác định biểu hiện phụ nào được coi là đầu vào của soi kèo bóng đá truoctran toán tử.Phần 4.1.6Để biết thêm thông tin.

Độ phân giải soi kèo bóng đá truoctran toán tử

  1. Chọn soi kèo bóng đá truoctran toán tử được xem xét từpg_operatorDanh mục hệ thống. Nếu tên toán tử không có trình độ học sinh đã được sử dụng (trường hợp thông thường), soi kèo bóng đá truoctran toán tử được xem xét là những người có tên và số đối số phù hợp có thể nhìn thấy trong đường dẫn tìm kiếm hiện tại (xemPhần 5.9.3). Nếu một tên toán tử đủ điều kiện được đưa ra, chỉ xem xét soi kèo bóng đá truoctran toán tử trong lược đồ được chỉ định.

    1. Nếu đường dẫn tìm kiếm tìm thấy nhiều toán tử với các soi kèo bóng đá truoctran đối số giống hệt nhau, chỉ có soi kèo bóng đá truoctran xuất hiện sớm nhất trong đường dẫn được xem xét. Các toán tử với các soi kèo bóng đá truoctran đối số khác nhau được xem xét trên một chân bình đẳng bất kể vị trí đường dẫn tìm kiếm.

  2. Kiểm tra nhà điều soi kèo bóng đá truoctran chấp nhận chính xác các loại đối số đầu vào. Nếu một người tồn tại (chỉ có thể có một trận đấu chính xác trong tập hợp các toán tử được xem xét), hãy sử dụng nó.[9](không phải điển hình), bất kỳ toán tử nào được tìm thấy trong một lược đồ cho phép người dùng không tin tưởng tạo đối tượng. Trong soi kèo bóng đá truoctran tình huống như vậy, soi kèo bóng đá truoctran đối số diễn viên để buộc một trận đấu chính xác.

    1. Nếu một đối số của việc gọi toán tử nhị phân là củakhông xác địnhsoi kèo bóng đá truoctran, sau đó giả sử nó giống như soi kèo bóng đá truoctran đối số khác cho kiểm tra này. Những lời mời liên quan đến haikhông xác địnhĐầu vào hoặc toán tử tiền tố cókhông xác địnhĐầu vào, sẽ không bao giờ tìm thấy một trận đấu ở bước này.

    2. Nếu một đối số của một người vận soi kèo bóng đá truoctran nhị phân là củakhông xác địnhsoi kèo bóng đá truoctran và soi kèo bóng đá truoctran khác thuộc soi kèo bóng đá truoctran miền, kiểm tra tiếp theo để xem có toán tử chấp nhận chính xác soi kèo bóng đá truoctran cơ sở của miền ở cả hai bên không; Nếu vậy, hãy sử dụng nó.

  3. Tìm kiếm trận đấu tốt nhất.

    1. soi kèo bóng đá truoctran bỏ các toán tử ứng viên mà các soi kèo bóng đá truoctran đầu vào không khớp và không thể được chuyển đổi (sử dụng chuyển đổi ngầm) để khớp.không xác địnhnghĩa đen được coi là có thể chuyển đổi thành bất cứ điều gì cho mục đích này. Nếu chỉ còn một ứng cử viên, hãy sử dụng nó;

    2. Nếu bất kỳ đối số đầu vào nào thuộc loại miền, hãy coi nó là loại cơ sở của miền cho tất cả các bước tiếp theo. Điều này đảm bảo rằng các miền hoạt động giống như các loại cơ sở của chúng cho mục đích phân giải điều soi kèo bóng đá truoctran mơ hồ.

    3. Chạy qua tất cả các ứng cử viên và giữ những người có những trận đấu chính xác nhất trên các soi kèo bóng đá truoctran đầu vào. Giữ tất cả các ứng cử viên nếu không có trận đấu chính xác.

    4. Chạy qua tất cả các ứng cử viên và giữ những người chấp nhận các soi kèo bóng đá truoctran ưa thích (thuộc soi kèo bóng đá truoctran soi kèo bóng đá truoctran dữ liệu đầu vào) ở hầu hết các vị trí nơi sẽ cần chuyển đổi soi kèo bóng đá truoctran. Giữ tất cả các ứng cử viên nếu không chấp nhận các soi kèo bóng đá truoctran ưa thích.

    5. Nếu có bất kỳ đối số đầu vào nào làkhông xác định, Kiểm tra các soi kèo bóng đá truoctran soi kèo bóng đá truoctran được chấp nhận tại các vị trí đối số đó bởi các ứng cử viên còn lại. Ở mỗi vị trí, chọnchuỗiDanh mục nếu có ứng viên nào chấp nhận danh mục đó. .

    6. Nếu có cả haikhông xác địnhvà các đối số kiểu đã biết, và tất cả các đối số kiểu đã biết có cùng soi kèo bóng đá truoctran, giả sử rằngkhông xác địnhĐối số cũng thuộc soi kèo bóng đá truoctran đó và kiểm tra ứng viên nào có thể chấp nhận soi kèo bóng đá truoctran đó tạikhông xác định-Argument vị trí. Nếu chính xác một ứng cử viên vượt qua bài kiểm tra này, hãy sử dụng nó.

Một số ví dụ theo sau.

Ví dụ 10.1. Độ phân giải soi kèo bóng đá truoctran toán tử gốc

Chỉ có một toán tử gốc (tiền tố|/) được xác định trong danh mục tiêu chuẩn và nó có một đối số của soi kèo bóng đá truoctranDouble Precision. Máy quét gán một soi kèo bóng đá truoctran ban đầuSố nguyênĐối với đối số trong biểu thức truy vấn này:

Chọn |/ 40 làm "căn bậc hai của 40";

Vì vậy, trình phân tích cú pháp thực hiện chuyển đổi soi kèo bóng đá truoctran trên toán hạng và truy vấn tương đương với:

CHỌN |/ CAST (40 là độ chính xác kép) là "căn bậc hai của 40";

Ví dụ 10.2. Chuỗi phân giải soi kèo bóng đá truoctran toán tử nối

Cú pháp giống như chuỗi được sử dụng để làm việc với các loại chuỗi và để làm việc với các loại mở rộng phức tạp. Các chuỗi có loại không xác định được khớp với các ứng cử viên vận soi kèo bóng đá truoctran có khả năng.

Một ví dụ với một đối số không xác định:

Chọn văn bản 'ABC' || 'def' là "văn bản và không xác định";

Trong trường hợp này, trình phân tích cú pháp có vẻ xem có toán tử đang sử dụngTextcho cả hai đối số. Vì có, nó giả định rằng đối số thứ hai nên được hiểu là soi kèo bóng đá truoctranText.

Đây là sự kết hợp của hai giá trị của các soi kèo bóng đá truoctran không xác định:

Chọn 'ABC' || 'def' là "không xác định";

Trong trường hợp này không có gợi ý ban đầu cho soi kèo bóng đá truoctran nào sử dụng, vì không có soi kèo bóng đá truoctran nào được chỉ định trong truy vấn. Vì vậy, trình phân tích cú pháp tìm kiếm tất cả các toán tử ứng cử viên và thấy rằng có các ứng cử viên chấp nhận cả đầu vào soi kèo bóng đá truoctran chuỗi và chuỗi bit.Text, được sử dụng làm soi kèo bóng đá truoctran cụ thể để giải quyết các chữ không xác định như.


Ví dụ 10.3. Độ phân giải soi kèo bóng đá truoctran toán tử giá trị và phủ định tuyệt đối

ThePostgreSQLDanh mục toán tử có một số mục cho toán tử tiền tố@, tất cả đều thực hiện các hoạt động giá trị tuyệt đối cho các soi kèo bóng đá truoctran dữ liệu số khác nhau. Một trong những mục này là dành cho soi kèo bóng đá truoctranfloat8, là soi kèo bóng đá truoctran ưa thích trong danh mục số. Vì thế,PostgreSQLSẽ sử dụng mục nhập đó khi phải đối mặt vớikhông xác địnhđầu vào:

Chọn @ '-4.5' là "abs";

Ở đây hệ thống đã hoàn toàn giải quyết theo nghĩa đen chưa biết là soi kèo bóng đá truoctranfloat8Trước khi áp dụng toán tử đã chọn. Chúng ta có thể xác minh rằngfloat8và không phải một số soi kèo bóng đá truoctran khác đã được sử dụng:

Chọn @ '-4.5e500' dưới dạng "abs";

Mặt khác, toán tử tiền tố~(phủ định bitwise) chỉ được xác định cho các soi kèo bóng đá truoctran dữ liệu số nguyên, không phải chofloat8. Vì vậy, nếu chúng ta thử một trường hợp tương tự với~, Chúng tôi nhận được:

Chọn ~ '20' làm "phủ định";

Điều này xảy ra vì hệ thống không thể quyết định trong số một số có thể~Người vận soi kèo bóng đá truoctran nên được ưu tiên. Chúng tôi có thể giúp nó với một diễn viên rõ ràng:

Chọn ~ cast ('20 'là int8) là "phủ định";

Ví dụ 10.4. Độ phân giải soi kèo bóng đá truoctran toán tử bao gồm mảng

Đây là một ví dụ khác về việc giải quyết một toán tử với một đầu vào đã biết và một đầu vào không xác định:

chọn mảng [1,2] <@ '1,2,3' là "là tập hợp con";

ThePostgreSQLDanh mục toán tử có một số mục cho toán tử infix<@, nhưng hai người duy nhất có thể chấp nhận một mảng số nguyên ở phía bên trái là bao gồm mảng (AnyArray <@ AnyArray) và bao gồm phạm vi (AnyEuity <@ Anyrange). Vì không có soi kèo bóng đá truoctran giả thuyết đa hình này (xemPhần 8.21) được coi là ưa thích, trình phân tích cú pháp không thể giải quyết sự mơ hồ trên cơ sở đó. Tuy nhiên,Bước 3.FNói với nó giả sử rằng chữ không xác định có cùng soi kèo bóng đá truoctran với đầu vào khác, nghĩa là mảng số nguyên. Bây giờ chỉ có một trong hai toán tử có thể khớp, vì vậy bao gồm mảng được chọn.


Ví dụ 10.5. Toán tử tùy chỉnh trên một soi kèo bóng đá truoctran miền

Người dùng đôi khi cố gắng khai báo các nhà khai thác chỉ áp dụng cho một soi kèo bóng đá truoctran tên miền. Điều này là có thể nhưng gần như không hữu ích như nó có vẻ, bởi vì các quy tắc phân giải toán tử được thiết kế để chọn các toán tử áp dụng cho soi kèo bóng đá truoctran cơ sở của miền.

Tạo tên miền mytext dưới dạng kiểm tra văn bản (...);

Truy vấn này sẽ không sử dụng toán tử tùy chỉnh. Trình phân tích cú pháp trước tiên sẽ xem nếu cómytext = mytexttoán tử (Bước 2.a), mà không có; Sau đó, nó sẽ xem xét soi kèo bóng đá truoctran cơ sở của miềnText, và xem cóText = Texttoán tử (Bước 2.B), có; Vì vậy, nó giải quyếtkhông xác định-Type theo nghĩa đen asTextvà sử dụngText = Texttoán tử. Cách duy nhất để sử dụng toán tử tùy chỉnh là sử dụng rõ ràng theo nghĩa đen:

Chọn * từ MyTable WHERE Val = text 'foo';

sao chomytext = TextNhà điều soi kèo bóng đá truoctran được tìm thấy ngay theo quy tắc chính xác. Nếu đạt được các quy tắc phù hợp nhất, chúng tích cực phân biệt đối xử với các nhà khai thác trên các loại miề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ớpMẫu nàyĐể báo cáo vấn đề tài liệu.