cách đọc kèo bóng đá (Source_TypeAStarget_type) Với chức năngfunction_name(argars_type[, ...]) [Như nhiệm vụ | Như tiềm ẩn] cách đọc kèo bóng đá (Source_TypeAStarget_type) Không có chức năng [Như nhiệm vụ | Như tiềm ẩn] cách đọc kèo bóng đá (Source_TypeAStarget_type) Với inout [Như nhiệm vụ | Như ẩn]
cách đọc kèo bóng đáXác định một cách đọc kèo bóng đá mới. MỘT Cast chỉ định cách thực hiện chuyển đổi giữa hai dữ liệu loại. Ví dụ:
Chọn cách đọc kèo bóng đá (42 là float8);
Chuyển đổi hằng số nguyên 42 thành loạifloat8bằng cách gọi một chức năng được chỉ định trước đó, Trong trường hợp nàyfloat8 (int4). (Nếu không cách đọc kèo bóng đá phù hợp đã được xác định, chuyển đổi không thành công.)
Hai loại có thểcủng cố nhị phân,, có nghĩa là việc chuyển đổi có thể được thực hiện"miễn phí"mà không cần gọi bất kỳ chức năng nào. Cái này requires that corresponding values use the same internal đại diện. Chẳng hạn, các loạiTextvàVarcharlà nhị phân cưỡng chế cả hai cách. Sự ép buộc nhị phân không nhất thiết là một mối quan hệ đối xứng. Ví dụ: cách đọc kèo bóng đá từXMLđếnTextcó thể được thực hiện miễn phí trong việc thực hiện hiện tại, nhưng hướng ngược lại Yêu cầu một chức năng thực hiện ít nhất một kiểm tra cú pháp. (Hai Các loại có thể ép buộc nhị phân, cả hai cách cũng được gọi là Tương thích nhị phân.)
Bạn có thể định nghĩa một cách đọc kèo bóng đá làI/O. Chuyển đổi cách đọc kèo bóng đáSử dụngvới inoutCú pháp. cách đọc kèo bóng đá chuyển đổi I/O được thực hiện bằng cách gọi chức năng đầu ra của kiểu dữ liệu nguồn và truyền kết quả đến chức năng đầu vào của kiểu dữ liệu đích.
Theo mặc định, một cách đọc kèo bóng đá chỉ có thể được gọi bằng một cách đọc kèo bóng đá rõ ràng yêu cầu, đó là một điều rõ ràngcast (xAStypename)hoặcx::TypenameXây dựng.
Nếu cách đọc kèo bóng đá được đánh dấulàm bài tậpSau đó, nó có thể được gọi ngầm khi gán một giá trị cho a Cột của kiểu dữ liệu đích. Ví dụ: giả sử rằngfoo.f1là một cột loạiText, sau đó:
Chèn vào các giá trị foo (f1) (42);
sẽ được phép nếu cách đọc kèo bóng đá từ loạiSố nguyênđể loạiTextđược đánh dấuAS ASSIGNMENT, nếu không thì không. (Chúng tôi thường sử dụng thuật ngữcách đọc kèo bóng đá gánĐể mô tả loại cách đọc kèo bóng đá này.)
Nếu cách đọc kèo bóng đá được đánh dấunhư ẩn ửngSau đó, nó có thể được gọi hoàn toàn trong bất kỳ bối cảnh nào, cho dù gán hoặc nội bộ trong một biểu thức. (Chúng tôi thường sử dụng thuật ngữcách đọc kèo bóng đá ngầmĐể mô tả loại này của cách đọc kèo bóng đá.) Ví dụ, hãy xem xét truy vấn này:
Chọn 2 + 4.0;
Trình phân tích cú pháp ban đầu đánh dấu các hằng số là loạiSố nguyênvàSốtương ứng. Không cóSố nguyên + Sốtoán tử trong các danh mục hệ thống, nhưng có mộtSố + Sốtoán tử. Truy vấn do đó sẽ thành công nếu một cách đọc kèo bóng đá từSố nguyênđếnSốcó sẵn và được đánh dấunhư ẩn ửng- trên thực tế nó là. Người phân tích cú pháp sẽ Áp dụng các cách đọc kèo bóng đá ngầm và giải quyết truy vấn như thể nó đã được Viết
Chọn Cast (2 là Số) + 4.0;
Bây giờ, các danh mục cũng cung cấp một cách đọc kèo bóng đá từSốđếnSố nguyên. Nếu điều đó cách đọc kèo bóng đá được đánh dấunhư ẩn ửng- nó không - sau đó trình phân tích cú pháp sẽ phải đối mặt với việc lựa chọn giữa Giải thích trên và thay thế của việc đúcSốHằng số thànhSố nguyênvà áp dụngSố nguyên + Số nguyêntoán tử. Thiếu bất kỳ kiến thức nào Lựa chọn để thích, nó sẽ từ bỏ và tuyên bố truy vấn mơ hồ. Thực tế là chỉ có một trong hai cách đọc kèo bóng đá là cách chúng tôi dạy cho trình phân tích cú pháp thích giải quyết hỗn hợpSố-and-Số nguyênBiểu thức asSố; Không có kiến thức tích hợp về điều đó.
Thật khôn ngoan khi bảo thủ về việc đánh dấu các cách đọc kèo bóng đá là ngầm. Một sự dư thừa của các đường dẫn đúc ngầm có thể gây raPOSTGRESQLĐể chọn gây ngạc nhiên diễn giải các lệnh hoặc không thể giải quyết các lệnh Tất cả vì có nhiều cách giải thích có thể. MỘT Nguyên tắc tốt là chỉ làm cho một cách đọc kèo bóng đá không thể mời được cho các phép biến đổi bảo tồn thông tin giữa các loại trong Cùng một loại loại chung. Ví dụ: cách đọc kèo bóng đá từINT2đếnINT4Có thể hợp lý ngầm, nhưng cách đọc kèo bóng đá từfloat8đếnINT4Có lẽ chỉ nên được gán. Các cách đọc kèo bóng đá phân loại loại chéo, chẳng hạn nhưTextđếnINT4, tốt nhất chỉ được thực hiện rõ ràng.
Lưu ý:Đôi khi nó cần thiết cho khả năng sử dụng hoặc Lý do tuân thủ tiêu chuẩn để cung cấp nhiều tiềm ẩn đúc giữa một tập hợp các loại, dẫn đến sự mơ hồ không thể tránh được như trên. Trình phân tích cú pháp có một dự phòng heuristic dựa trênLoại danh mụcvàCác loại ưu tiênĐiều đó có thể giúp Cung cấp hành vi mong muốn trong những trường hợp như vậy. Nhìn thấycách đọc kèo bóng đá loạiĐể biết thêm thông tin.
Để có thể cách đọc kèo bóng đá một diễn viên, bạn phải sở hữu nguồn hoặc Kiểu dữ liệu mục tiêu. Để cách đọc kèo bóng đá ra một dàn diễn viên có thể sử dụng được, bạn phải Superuser. (Hạn chế này được thực hiện bởi vì một sai lầm Chuyển đổi diễn viên có thể sử dụng nhị phân có thể dễ dàng làm hỏng máy chủ.)
Tên của kiểu dữ liệu nguồn của dàn cách đọc kèo bóng đá.
Tên của kiểu dữ liệu đích của dàn cách đọc kèo bóng đá.
Hàm được sử dụng để thực hiện cách đọc kèo bóng đá. Tên chức năng Có thể là sơ đồ đủ điều kiện. Nếu không, chức năng sẽ Nhìn lên trong đường dẫn tìm kiếm lược đồ. Kết quả của chức năng Kiểu dữ liệu phải khớp với loại mục tiêu của dàn cách đọc kèo bóng đá. Của nó Các đối số được thảo luận dưới đây.
Cho biết loại nguồn có thể sử dụng được loại mục tiêu, do đó không cần chức năng để thực hiện dàn cách đọc kèo bóng đá.
cho biết cách đọc kèo bóng đá là cách đọc kèo bóng đá chuyển đổi I/O, được thực hiện bằng cách gọi chức năng đầu ra của nguồn Kiểu dữ liệu và chuyển kết quả cho chức năng đầu vào của Kiểu dữ liệu đích.
cho biết rằng các cách đọc kèo bóng đá có thể được gọi một cách ngầm bối cảnh gán.
chỉ ra rằng các cách đọc kèo bóng đá có thể được gọi ngầm trong bất kỳ bối cảnh.
Các chức năng triển khai cách đọc kèo bóng đá có thể có một đến ba đối số. Loại đối số đầu tiên phải giống hệt hoặc có thể sử dụng được nhị phân từ loại nguồn của cách đọc kèo bóng đá. Đối số thứ hai, nếu có, Phải là loạiSố nguyên; nó nhận được loại công cụ sửa đổi được liên kết với loại đích hoặc-1Nếu không có. Đối số thứ ba, nếu hiện tại, phải là loạiBoolean; nó nhận đượcĐúngNếu cách đọc kèo bóng đá là một cách đọc kèo bóng đá rõ ràng,SaiNếu không. (Thật kỳ lạ, SQL Nhu cầu tiêu chuẩn các hành vi khác nhau cho rõ ràng và tiềm ẩn đúc trong một số trường hợp. Đối số này được cung cấp cho các chức năng phải thực hiện các cách đọc kèo bóng đá như vậy. Bạn không nên thiết kế Các loại dữ liệu của riêng bạn để điều này quan trọng.)
Loại trả về của hàm đúc phải giống hệt với hoặc nhị phân-coercable với loại mục tiêu của cách đọc kèo bóng đá.
Thông thường, một cách đọc kèo bóng đá phải có dữ liệu nguồn và mục tiêu khác nhau loại. Tuy nhiên, nó được phép khai báo một cách đọc kèo bóng đá với Các loại nguồn và mục tiêu nếu nó có chức năng triển khai Cast với nhiều hơn một đối số. Điều này được sử dụng để đại diện Các chức năng ép buộc chiều dài cụ thể trong các danh mục hệ thống. Hàm được đặt tên được sử dụng để ép buộc một giá trị của loại Loại giá trị sửa đổi được đưa ra bởi đối số thứ hai của nó.
Khi một cách đọc kèo bóng đá có các loại nguồn và mục tiêu khác nhau và một chức năng mất nhiều hơn một đối số, nó đại diện cho chuyển đổi từ loại này sang loại khác và áp dụng một chiều dài cưỡng chế trong một bước duy nhất. Khi không có mục nào như vậy, Sự ép buộc của một loại sử dụng công cụ sửa đổi loại liên quan đến hai bước, một để chuyển đổi giữa các loại dữ liệu và một thứ hai để áp dụng người sửa đổi.
sử dụngDrop CastĐể loại bỏ Các cách đọc kèo bóng đá do người dùng xác định.
Hãy nhớ rằng nếu bạn muốn có thể chuyển đổi các loại các cách bạn cần khai báo rõ ràng về các cách đọc kèo bóng đá.
Thông thường không cần thiết phải cách đọc kèo bóng đá các diễn viên giữa Các loại do người dùng xác định và các loại chuỗi tiêu chuẩn (Text, Varcharvàchar (n), cũng như Các loại do người dùng xác định được xác định là trong chuỗi loại).PostgreSQLcung cấp Tự động chuyển đổi I/O cho điều đó. Các cách đọc kèo bóng đá tự động để Các loại chuỗi được coi là cách đọc kèo bóng đá gán, trong khi tự động Pha từ các loại chuỗi chỉ rõ ràng. Bạn có thể ghi đè lên điều này hành vi bằng cách tuyên bố dàn cách đọc kèo bóng đá của riêng bạn để thay thế một cách đọc kèo bóng đá tự động, Nhưng thường thì lý do duy nhất để làm như vậy là nếu bạn muốn Chuyển đổi để dễ dàng được mời hơn so với tiêu chuẩn Cài đặt chỉ phân công hoặc chỉ rõ ràng. Một lý do khác có thể là bạn muốn chuyển đổi để hành xử khác với loại chức năng I/O của loại; Nhưng điều đó đủ đáng ngạc nhiên khi bạn Nên suy nghĩ hai lần về việc liệu đó có phải là một ý kiến hay. (Một nhỏ Số lượng các loại tích hợp thực sự có những hành vi khác nhau Đối với chuyển đổi, chủ yếu là do các yêu cầu của SQL tiêu chuẩn.)
trướcPostgreSQL7.3, Mọi chức năng có cùng tên với kiểu dữ liệu, được trả về loại dữ liệu đó và lấy một đối số thuộc loại khác là tự động là một chức năng đúc. Công ước này đã bị bỏ rơi đối mặt với việc giới thiệu các lược đồ và có thể Đại diện cho các phôi có thể sử dụng nhị phân trong các danh mục hệ thống. Các Các chức năng cách đọc kèo bóng đá tích hợp vẫn tuân theo sơ đồ đặt tên này, nhưng chúng phải được hiển thị dưới dạng cách đọc kèo bóng đá trong danh mục hệ thốngPG_CAST
Trong khi không bắt buộc, bạn nên tiếp tục Thực hiện theo quy ước cũ về việc thực hiện cách đọc kèo bóng đá đặt tên Chức năng sau kiểu dữ liệu đích. Nhiều người dùng đã quen với Có thể sử dụng các loại dữ liệu bằng cách sử dụng ký hiệu kiểu chức năng, đó làtypename(x). Ký hiệu này trên thực tế không có gì hơn cũng không nhỏ hơn một cuộc gọi của chức năng thực hiện cách đọc kèo bóng đá; nó là Không được coi là đặc biệt như một cách đọc kèo bóng đá. Nếu các chức năng chuyển đổi của bạn là không được đặt tên để hỗ trợ hội nghị này thì bạn sẽ ngạc nhiên Người dùng. TừPOSTGRESQLCho phép quá tải của cùng một tên hàm với đối số khác nhau Các loại, không có khó khăn gì trong việc chuyển đổi nhiều các chức năng từ các loại khác nhau mà tất cả đều sử dụng loại mục tiêu tên.
Lưu ý:Thực ra đoạn trước là một quá trình đơn giản hóa: có hai trường hợp trong đó Cấu trúc cuộc gọi chức năng sẽ được coi là yêu cầu cách đọc kèo bóng đá mà không phù hợp với nó với một chức năng thực tế. Nếu a Chức năng gọitên(x) không chính xác phù hợp với bất kỳ hiện tại nào chức năng, nhưngtênlà Tên của một kiểu dữ liệu vàpg_castCung cấp cách đọc kèo bóng đá có thể sử dụng nhị phân cho loại này từ loại củax, thì cuộc gọi sẽ Được hiểu là một cách đọc kèo bóng đá nhị phân. Ngoại lệ này được thực hiện để các cách đọc kèo bóng đá có thể sử dụng nhị phân có thể được gọi bằng cách sử dụng Cú pháp chức năng, mặc dù chúng thiếu bất kỳ chức năng nào. Tương tự như vậy, nếu không cópg_castmục nhập nhưng cách đọc kèo bóng đá sẽ đến hoặc từ một loại chuỗi, Cuộc gọi sẽ được hiểu là cách đọc kèo bóng đá chuyển đổi I/O. Cái này Ngoại lệ cho phép các cách đọc kèo bóng đá chuyển đổi I/O được gọi bằng cách sử dụng Cú pháp chức năng.
Để cách đọc kèo bóng đá một bài tập được đúc từ loạiBigintđể loạiINT4Sử dụng chức năngINT4 (BIGINT):
25452_25526
(cách đọc kèo bóng đá này đã được xác định trước trong hệ thống.)