Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang choPostgreSQL : 문서 : 17 : 10 장 10 장 윈 토토Phiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Chương 10. 범퍼카 토토 Chuyển đổi

SQLCâu lệnh có thể, cố ý hay không, yêu cầu trộn lẫn các 범퍼카 토토 dữ liệu khác nhau trong cùng một biểu thức.PostgreSQLCó các cơ sở rộng lớn để đánh giá 범퍼카 토토 hỗn hợp biểu thức.

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 범퍼카 토토. Tuy nhiên, ẩn Chuyển đổi được thực hiện bởiPostgreSQLcó 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àngChuyển đổi 범퍼카 토토.

Chương này giới thiệuPostgreSQLLoại cơ chế chuyển đổi và quy ước. Tham khảo các phần có liên quan trongChương 8Chương 9Để biết thêm thông tin về cụ thể Kiểu dữ liệu và các chức năng và toán tử cho phép.

10.1. Tổng quan

SQLlà một gõ mạnh mẽ ngôn ngữ. Nghĩa là, mọi mục dữ liệu đều có một loại dữ liệu liên quan xác định hành vi của nó và cho phép sử dụng.PostgreSQLcó hệ thống loại mở rộng đó là tổng quát và linh hoạt hơn nhiều so với các khácSQLtriển khai. Kể từ đây, Hầu hết các hành vi chuyển đổi 범퍼카 토토 trongPostgreSQLnên được chi phối bởi chung Quy tắc chứ không phải bởiad hocHeuristic, để cho phép các biểu thức 범퍼카 토토 hỗn hợp có ý nghĩa Ngay cả với các 범퍼카 토토 do người dùng xác định.

ThePostgreSQLMáy quét/phân tích cú pháp giải mã các yếu tố từ vựng thành năm Các loại cơ bản: số nguyên, số điểm nổi, Chuỗi, tên và từ khóa. Hằng số của hầu hết không phải là số Các loại được phân loại đầu tiên là chuỗi. TheSQLĐịnh nghĩa ngôn ngữ cho phép chỉ định Nhập tên với chuỗi và cơ chế này có thể được sử dụng trongPostgreSQLĐể 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

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 hằng số theo nghĩa đen, 범퍼카 토토Textđiểm. Nếu một 범퍼카 토토 là không được chỉ định cho một chuỗi theo nghĩa đen, sau đó 범퍼카 토토 trình giữ chỗkhông xác địnhđược gán ban đầu, là được giải quyết trong các giai đoạn sau như mô tả bên dưới.

Có bốn cơ bảnSQLCấu trúc yêu cầu loại khác biệt Quy tắc chuyển đổi trongPostgreSQLphân tích cú pháp:

toán tử

PostgreSQLCho phép Biểu thức với tiền tố và postfix unary (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.

Chức năng gọi

Phần lớnPostgreSQLHệ thống loại đượ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ó thể có một hoặc nhiều lập luận. TừPostgreSQLchứ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 loại dữ liệu của đối số được cung cấp.

Lưu trữ giá trị

SQL ChènCập nhậtCâ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 câu lệnh phải được khớp với, và có lẽ được chuyển đổi thành, các loại mục tiêu các cột.

Union, casemảngCấu trúc

Vì tất cả các kết quả truy vấn từ một liên minhChọnCâu lệnh phải xuất hiện trong một tập hợp các cột, các 범퍼카 토토 kết quả của mỗiChọnĐiều khoản phải được kết hợp và chuyển đổi thành một bộ đồng đều. Tương tự, chi nhánh Biểu thức của AcaseXây dựng phải được chuyển đổi thành một 범퍼카 토토 chung đểcaseBiểu thức nói chung có một 범퍼카 토토 đầu ra. Tương tự như vậy chomảngCấu trúc.

Danh mục hệ thống lưu trữ thông tin về cái nào Chuyển đổi, được gọi làCasts, giữa Các loại dữ liệu là hợp lệ và cách thực hiện các chuyển đổi đó. Các diễn viên bổ sung có thể được thêm bởi người dùng vớiTạo CastLệnh. (Điều này thường được thực hiện trong Kết hợp với việc xác định các loại dữ liệu mới. Tập hợp các diễn viên giữa các loại tích hợp đã được chế tạo cẩn thận và là tốt nhất không bị thay đổi.)

Một heuristic bổ sung được cung cấp trong trình phân tích cú pháp để cho phép đoán tốt hơn về hành vi thích hợp choSQLCác 범퍼카 토토 tiêu chuẩn. Có một số cơ bản범퍼카 토토 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 loại, ngoại trừ do người dùng xác định, có một hoặc nhiềuƯ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 범퍼카 토토 là của riêng nó 범퍼카 토토 ưa thích. Biểu hiện mơ hồ (những người có nhiều do đó các giải pháp phân tích ứng viên) do đó thường có thể được giải quyết Khi có nhiều 범퍼카 토토 tích hợp có thể, nhưng chúng sẽ Tăng lỗi khi có nhiều lựa chọn cho người dùng do người dùng xác định các 범퍼카 토토.

Tất cả các quy tắc chuyển đổi 범퍼카 토토 được thiết kế với một số Nguyên tắc trong tâm trí:

  • Chuyển đổi 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 범퍼카 토토 do người dùng xác định, trong đó trình phân tích cú pháp không cóA PrioriKiến thức, nên được"cao hơn"Trong phân cấp 범퍼카 토토. Trong các biểu thức 범퍼카 토토 hỗn hợp, các 범퍼카 토토 bản địa sẽ luôn luôn chuyển đổi thành 범퍼카 토토 do người dùng xác định (tất nhiên, chỉ khi chuyển đổi là cần thiết).

  • Các 범퍼카 토토 do người dùng xác định không liên quan. Hiện nay,PostgreSQLkhông có thông tin có sẵn cho nó về mối quan hệ giữa các loại, khác với các heuristic được mã hóa cứng cho các loại tích hợp và các mối quan hệ tiềm ẩn dựa trên các chức năng có sẵn và diễn viên.

  • 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 chuyển đổi loại ngầm. Nghĩa là, nếu một truy vấn được xây dựng tốt và các loại đã khớp với nhau, sau đó truy vấn nên tiến hành mà không cần Dành thêm thời gian cho trình phân tích cú pháp và không giới thiệu Các cuộc gọi 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 xác định chức năng mới với các loại đố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 làm Chuyển đổi ngầm bằng cách sử dụng hàm cũ.