SQLTruy vấn có thể, cố ý hoặc Không, yêu cầu trộn các soi kèo bóng đá truoctran dữ liệu khác nhau trong cùng một sự biểu lộ.Postgrescó Các cơ sở rộng lớn để đánh giá các biểu thức soi kèo bóng đá truoctran hỗn hợp.
Trong nhiều trường hợp, người dùng sẽ không cần hiểu chi tiết của cơ chế chuyển đổi soi kèo bóng đá truoctran. Tuy nhiên, ẩn Chuyển đổi được thực hiện bởiPostgresCó thể ảnh hưởng đến kết quả của một truy vấn. Khi cần thiết, những kết quả này có thể được điều chỉnh bởi người dùng hoặc lập trình viên bằng cách sử dụngrõ ràngsoi kèo bóng đá truoctran ép buộc.
Chương này giới thiệuPostgressoi kèo bóng đá truoctran cơ chế chuyển đổi và quy ước. Tham khảo các phần có liên quan trong hướng dẫn của người dùng và hướng dẫn của lập trình viên để biết thêm thông tin về dữ liệu cụ thể Các soi kèo bóng đá truoctran và các chức năng cho phép và toán tử.
Hướng dẫn của lập trình viên có nhiều chi tiết hơn về chính xác Các thuật toán được sử dụng để chuyển đổi và ép buộc soi kèo bóng đá truoctran ngầm.
SQLlà một gõ mạnh mẽ ngôn ngữ. Nghĩa là, mọi mục dữ liệu đều có một soi kèo bóng đá truoctran dữ liệu liên quan xác định hành vi của nó và cho phép sử dụng.Postgres12126_12213RDBMStriển khai. Do đó, hầu hết các soi kèo bóng đá truoctran Hành vi chuyển đổi trongPostgres12358_12517
ThePostgres12573_12773SQLĐịnh nghĩa ngôn ngữ cho phép chỉ định soi kèo bóng đá truoctran Tên với chuỗi và cơ chế này có thể được sử dụng trongPostgresĐể khởi động trình phân tích cú pháp xuống đường dẫn chính xác. Ví dụ: truy vấn
tgl = chọn văn bản 'gốc' là "nhãn", điểm '(0,0)' làm "giá trị"; Nhãn | Giá trị --------+------- Nguồn gốc | (0,0) (1 hàng)Có hai chuỗi, soi kèo bóng đá truoctranTextvàđiểm. Nếu một soi kèo bóng đá truoctran không được chỉ định cho một Chuỗi, sau đó là soi kèo bóng đá truoctran trình giữ chỗkhông xác địnhđược gán ban đầu, sẽ được giải quyết trong soi kèo bóng đá truoctran giai đoạn sau như mô tả dưới.
Có bốn cơ bảnSQLCấu trúc yêu cầu các quy tắc chuyển đổi soi kèo bóng đá truoctran riêng biệt trongPostgresphân tích cú pháp:
Postgrescho phép Biểu thức với soi kèo bóng đá truoctran biểu thức bên trái và bên phải (một đối số) Người vận hành, cũng như nhị phân (hai đối số) người vận hành.
Phần lớnPostgressoi kèo bóng đá truoctran hệ thống được xây dựng xung quanh một bộ chức năng phong phú. Các cuộc gọi chức năng có một hoặc nhiều đối số, đối với bất kỳ truy vấn cụ thể, phải được khớp với các chức năng Có sẵn trong danh mục hệ thống. TừPostgreschức năng cho phép quá tải, tên chức năng một mình không duy nhất Xác định chức năng được gọi --- trình phân tích cú pháp phải chọn đúng chức năng dựa trên các soi kèo bóng đá truoctran dữ liệu của đối số được cung cấp.
SQLChèn và cập nhật Các câu lệnh đặt kết quả của các biểu thức vào một bảng. Các biểu thức trong truy vấn phải được kết hợp với, và có lẽ được chuyển đổi thành, các soi kèo bóng đá truoctran mục tiêu các cột.
Vì tất cả chọn kết quả từ câu lệnh chọn liên minh phải xuất hiện trong một tập hợp các cột, các soi kèo bóng đá truoctran của Kết quả của mỗi mệnh đề chọn phải được khớp và chuyển đổi thành một bộ đồng đều. Tương tự, kết quả Biểu thức của một cấu trúc trường hợp phải được ép buộc soi kèo bóng đá truoctran phổ biến để toàn bộ biểu thức trường hợp có soi kèo bóng đá truoctran đầu ra đã biết.
Nhiều quy tắc chuyển đổi soi kèo bóng đá truoctran chung sử dụng đơn giản các quy ước được xây dựng trênPostgresHệ thống chức năng và toán tử bàn. Có một số heuristic bao gồm trong soi kèo bóng đá truoctran Các quy tắc để hỗ trợ tốt hơn các quy ước choSQL92Các soi kèo bóng đá truoctran bản địa tiêu chuẩn nhưSmallInt, Số nguyênvàfloat.
ThePostgres15978_16483
16494_16597SQLCác soi kèo bóng đá truoctran tiêu chuẩn. Có một số cơ bảnsoi kèo bóng đá truoctran danh mụcXác định: Boolean, Số, Chuỗi, BitString, DateTime, TimesPan, hình học, Mạng và người dùng định nghĩa. Mỗi soi kèo bóng đá truoctran, ngoại trừ do người dùng xác định, có mộtsoi kèo bóng đá truoctran ưu tiênđược lựa chọn tốt hơn khi có sự mơ hồ. TRONG Danh mục do người dùng xác định, mỗi soi kèo bóng đá truoctran là soi kèo bóng đá truoctran ưa thích của riêng nó. Biểu hiện mơ hồ (những người có phân tích cú pháp nhiều ứng cử viên giải pháp) thường có thể được giải quyết khi có nhiều các soi kèo bóng đá truoctran có thể tích hợp, nhưng chúng sẽ gây ra lỗi khi Có nhiều lựa chọn cho các soi kèo bóng đá truoctran do người dùng xác định.
Tất cả các quy tắc chuyển đổi soi kèo bóng đá truoctran được thiết kế với một số Nguyên tắc trong tâm trí:
soi kèo bóng đá truoctran ngầm không bao giờ có điều đáng ngạc nhiên hoặc Kết quả không thể đoán trước.
Các soi kèo bóng đá truoctran do người dùng định nghĩa, trong đó trình phân tích cú pháp không có Kiến thức a-priori, nên "cao hơn" trong soi kèo bóng đá truoctran phân cấp. Trong các biểu thức soi kèo bóng đá truoctran hỗn hợp, các soi kèo bóng đá truoctran gốc sẽ luôn luôn được chuyển đổi thành soi kèo bóng đá truoctran do người dùng xác định (tất nhiên, Chỉ khi chuyển đổi là cần thiết).
Các soi kèo bóng đá truoctran do người dùng xác định không liên quan. Hiện nay,Postgreskhông có thông tin có sẵn cho nó về mối quan hệ giữa Các soi kèo bóng đá truoctran, ngoài các heuristic được mã hóa cứng cho các soi kèo bóng đá truoctran tích hợp và các mối quan hệ ngầm dựa trên các chức năng có sẵn trong danh mục.
Không nên có thêm chi phí từ trình phân tích cú pháp hoặc người thực thi nếu một truy vấn không cần soi kèo bóng đá truoctran ngầm chuyển đổi. Nghĩa là, nếu một truy vấn được xây dựng tốt và Các soi kèo bóng đá truoctran đã khớp, sau đó truy vấn nên tiến hành mà không dành thêm thời gian trong trình phân tích cú pháp và không có Giới thiệu các chức năng chuyển đổi ngầm không cần thiết vào truy vấn.
Ngoài ra, nếu một truy vấn thường yêu cầu chuyển đổi cho một hàm và nếu sau đó người dùng định nghĩa một chức năng rõ ràng với các soi kèo bóng đá truoctran đối số chính xác, trình phân tích cú pháp nên sử dụng chức năng mới này và sẽ không còn chuyển đổi ngầm bằng cách sử dụng hàm cũ.