Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển: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.tỷ lệ kèo bóng đá#

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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá toán tử.Phần 4.1.6Để biết thêm thông tin.

Độ phân giải tỷ lệ kèo bóng đá toán tử

  1. Chọn tỷ lệ kèo bóng đá 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), các toán tử được xem xét là những tỷ lệ kèo bóng đá 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.10.3). Nếu một tên toán tử đủ điều kiện được đưa ra, chỉ xem xét tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá đối số giống hệt nhau, chỉ có tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá đố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 hành chấp nhận chính xác các loại đối số đầu vào. Nếu một tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá dùng không tin tưởng tạo đối tượng. Trong các tình huống như vậy, các đố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 tỷ lệ kèo bóng đá tử nhị phân là củakhông xác địnhtỷ lệ kèo bóng đá, sau đó giả sử nó giống như tỷ lệ kèo bóng đá đố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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá nhị phân là củakhông xác địnhtỷ lệ kèo bóng đá và tỷ lệ kèo bóng đá khác thuộc tỷ lệ kèo bóng đá miền, kiểm tra tiếp theo để xem có toán tử chấp nhận chính xác tỷ lệ kèo bóng đá 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. tỷ lệ kèo bóng đá bỏ các toán tử ứng cử viên mà các tỷ lệ kèo bóng đá đầ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 tỷ lệ kèo bóng đá mơ hồ.

    3. Chạy qua tất cả các ứng cử viên và giữ những tỷ lệ kèo bóng đá có những trận đấu chính xác nhất trên các loại đầ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 tỷ lệ kèo bóng đá chấp nhận các loại ưa thích (thuộc loại loại dữ liệu đầu vào) ở hầu hết các vị trí mà sẽ cần chuyển đổi loại. Giữ tất cả các ứng cử viên nếu không chấp nhận các loại ư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 tỷ lệ kèo bóng đá tỷ lệ kèo bóng đá đượ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ỗiThể tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá, giả sử rằngkhông xác địnhĐối số cũng thuộc tỷ lệ kèo bóng đá đó và kiểm tra ứng viên nào có thể chấp nhận tỷ lệ kèo bóng đá đó 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 tỷ lệ kèo bóng đá toán tử gốc

Chỉ có một tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đáDouble Precision. Máy quét gán một tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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ó tỷ lệ kèo bóng đá 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à tỷ lệ kèo bóng đáText.

Đây là sự kết hợp của hai giá trị của các tỷ lệ kèo bóng đá 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 nào cho tỷ lệ kèo bóng đá sử dụng, vì không có tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá chuỗi và chuỗi bit.Text, được sử dụng làm tỷ lệ kèo bóng đá cụ thể để giải quyết các chữ không xác định như.


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

ThePostgreSQLDanh mục tỷ lệ kèo bóng đá tử có một số mục cho tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá dữ liệu số khác nhau. Một trong những mục này là dành cho tỷ lệ kèo bóng đáfloat8, là tỷ lệ kèo bóng đá ư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 đã ngầm giải quyết theo nghĩa đen chưa biết là tỷ lệ kèo bóng đáfloat8Trước khi áp dụng tỷ lệ kèo bóng đá tử đã chọn. Chúng ta có thể xác minh rằng​​float8và không phải một số tỷ lệ kèo bóng đá khác đã được sử dụng:

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

Mặt khác, tỷ lệ kèo bóng đá tử tiền tố~(phủ định bitwise) chỉ được xác định cho các tỷ lệ kèo bóng đá 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ể~tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá tử có một số mục cho tỷ lệ kèo bóng đá tử infix<@, nhưng hai tỷ lệ kèo bóng đá 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ó tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá miền

tỷ lệ kèo bóng đá dùng đôi khi cố gắng khai báo các nhà khai thác chỉ áp dụng cho một loại 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 loại 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 tỷ lệ kèo bóng đá tử tùy chỉnh. Trình phân tích cú pháp trước tiên sẽ xem nếu cómytext = mytexttỷ lệ kèo bóng đá tử (Bước 2.a), mà không có; Sau đó, nó sẽ xem xét tỷ lệ kèo bóng đá cơ sở của miềnText, và xem cóText = Texttỷ lệ kèo bóng đá 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 = Texttỷ lệ kèo bóng đá tử. Cách duy nhất để sử dụng tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá được tìm thấy ngay theo quy tắc khớp 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.