Tạo Cast (Source_TypeAStarget_type) Với chức năngfunction_name(argars_type[, ...]) [Như nhiệm vụ | Như tiềm ẩn] Tạo Cast (Source_TypeAStarget_type) Không có chức năng [Như nhiệm vụ | Như tiềm ẩn] Tạo Cast (Source_TypeAStarget_type) Với inout [Như nhiệm vụ | Như ẩn]
Tạo CastXác định soi kèo bóng đá truoctran diễn viên 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 soi kèo bóng đá truoctran (42 là float8);
Chuyển đổi hằng số nguyên 42 thành soi kèo bóng đá truoctranfloat8bằng cách gọi soi kèo bóng đá truoctran chức năng được chỉ định trước đó, Trong trường hợp nàyfloat8 (int4)11559_11626
Hai soi kèo bóng đá truoctran 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 yêu cầu các giá trị tương ứng sử dụng cùng soi kèo bóng đá truoctran bên trong đại diện. Chẳng hạn, các loạiTextvà11975_11984là nhị phân cưỡng chế cả hai cách. Sự ép buộc nhị phân không nhất thiết là soi kèo bóng đá truoctran mối quan hệ đối xứng. Ví dụ: diễn viên 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 soi kèo bóng đá truoctran chức năng thực hiện ít nhất soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran diễn viên làI/O. Chuyển đổi soi kèo bóng đá truoctranbằng cách sử dụngvới INOUTCú pháp. soi kèo bóng đá truoctran diễn viên chuyển đổi I/O được thực hiện bởi gọi chức năng đầu ra của kiểu dữ liệu nguồn và truyền chuỗi kết quả cho chức năng đầu vào của dữ liệu đích kiểu. Trong nhiều trường hợp phổ biến, tính năng này tránh được sự cần thiết phải viết soi kèo bóng đá truoctran chức năng đúc riêng để chuyển đổi. soi kèo bóng đá truoctran diễn viên chuyển đổi I/O hoạt động giống như soi kèo bóng đá truoctran diễn viên dựa trên chức năng thông thường; Chỉ có việc thực hiện là khác nhau.
Theo mặc định, soi kèo bóng đá truoctran diễn viên chỉ có thể được gọi bởi soi kèo bóng đá truoctran diễn viên rõ ràng yêu cầu, đó là soi kèo bóng đá truoctran điều rõ ràngCast (xASTypename)13169_13175x::typenameXây dựng.
Nếu soi kèo bóng đá truoctran được đánh dấulàm bài tậpSau đó, nó có thể được gọi ngầm khi gán soi kèo bóng đá truoctran giá trị cho a Cột của kiểu dữ liệu đích. Ví dụ: giả sử rằngfoo.f1là soi kèo bóng đá truoctran cột loạiText, sau đó:
Chèn vào các giá trị foo (f1) (42);
sẽ được phép nếu soi kèo bóng đá truoctran từ loạiSố nguyênđể soi kèo bóng đá truoctranTextđược đánh dấulàm bài tập, nếu không thì không. (Chúng tôi thường sử dụng thuật ngữsoi kèo bóng đá truoctran gánĐể mô tả loại soi kèo bóng đá truoctran này.)
Nếu soi kèo bóng đá truoctran đượ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 soi kèo bóng đá truoctran biểu thức. (Chúng tôi thường sử dụng thuật ngữsoi kèo bóng đá truoctran ngầmĐể mô tả loại này của soi kèo bóng đá truoctran.) 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à soi kèo bóng đá truoctranSố 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ó soi kèo bóng đá truoctranSố + Sốtoán tử. Truy vấn do đó sẽ thành công nếu soi kèo bóng đá truoctran diễn viên từSố nguyênđếnSốcó sẵn và được đánh dấunhư ẩn ửng- trong thực tế nó là. Người phân tích cú pháp sẽ Áp dụng các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran diễn viên từSốđếnSố nguyên. Nếu điều đó soi kèo bóng đá truoctran đượ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ó soi kèo bóng đá truoctran trong hai diễn viên 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 làSố; 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 diễn viên là tiềm ẩn. soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran diễn viên 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 soi kèo bóng đá truoctran loại loại chung. Ví dụ: diễn viên từINT2đếnINT4Có thể soi kèo bóng đá truoctran cách hợp lý ngầm, nhưng diễn viên từfloat816635_16643INT4Có lẽ chỉ nên được chuyển nhượng. Các soi kèo bóng đá truoctran phân loại loại chéo, chẳng hạn nhưTextđếnINT4, được thực hiện tốt nhất chỉ 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 soi kèo bóng đá truoctran 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ó soi kèo bóng đá truoctran dự phòng heuristic dựa trênsoi kèo bóng đá truoctran danh mụcvàCác soi kèo bóng đá truoctran ư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ấyTạo soi kèo bóng đá truoctranĐể biết thêm thông tin.
Để có thể tạo soi kèo bóng đá truoctran diễn viên, bạn phải sở hữu nguồn hoặc Kiểu dữ liệu đích và cósử dụngĐặc quyền ở loại khác. Để tạo ra soi kèo bóng đá truoctran diễn viên có thể sử dụng nhị phân, Bạn phải là siêu nhân. (Hạn chế này được thực hiện bởi vì soi kèo bóng đá truoctran Chuyển đổi đúc nhị phân sai lầm 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 soi kèo bóng đá truoctran.
Tên của kiểu dữ liệu đích của dàn soi kèo bóng đá truoctran.
18336_18630
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 soi kèo bóng đá truoctran.
18952_19175
Cho biết rằng các diễn viên có thể được gọi soi kèo bóng đá truoctran cách ngầm bối cảnh gán.
chỉ ra rằng các soi kèo bóng đá truoctran có thể được gọi ngầm trong bất kỳ bối cảnh.
Các chức năng triển khai diễn viên có thể có soi kèo bóng đá truoctran đế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 diễn viên. Đối số thứ hai, nếu có, Phải là loạiSố nguyên; nó nhận được soi kèo bóng đá truoctran công cụ sửa đổi được liên kết với soi kèo bóng đá truoctran đích hoặc-1Nếu không có. Đối số thứ ba, nếu hiện tại, phải là soi kèo bóng đá truoctranBoolean; nó nhận đượctrueNếu diễn viên là soi kèo bóng đá truoctran diễn viên 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 soi kèo bóng đá truoctran 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 diễn viên 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 soi kèo bóng đá truoctran.
Thông thường, soi kèo bóng đá truoctran diễn viên 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 soi kèo bóng đá truoctran diễn viên 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 soi kèo bóng đá truoctran đố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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran diễn viên có các loại nguồn và mục tiêu khác nhau và soi kèo bóng đá truoctran chức năng mất nhiều hơn soi kèo bóng đá truoctran đối số, nó hỗ trợ chuyển đổi từ loại này sang loại khác và áp dụng soi kèo bóng đá truoctran chiều dài cưỡng chế trong soi kèo bóng đá truoctran bước duy nhất. Khi không có mục nào như vậy, cưỡng chế cho soi kèo bóng đá truoctran loại sử dụng soi kèo bóng đá truoctran công cụ sửa đổi loại liên quan đến hai diễn viên các bước, soi kèo bóng đá truoctran để chuyển đổi giữa các loại dữ liệu và thứ hai để áp dụng công cụ sửa đổi.
soi kèo bóng đá truoctran diễn viên đến hoặc từ soi kèo bóng đá truoctran loại miền hiện không có hiệu lực. Đúc đến hoặc từ soi kèo bóng đá truoctran miền sử dụng các phôi được liên kết với loại cơ bản.
sử dụngDrop CastĐể loại bỏ Các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran.
Thông thường không cần thiết phải tạo phôi giữa Các soi kèo bóng đá truoctran do người dùng xác định và các soi kèo bóng đá truoctran chuỗi tiêu chuẩn (Text, Varcharvàchar (n), cũng như Các soi kèo bóng đá truoctran do người dùng xác định được xác định là trong chuỗi soi kèo bóng đá truoctran).PostgreSQLcung cấp Tự động chuyển đổi I/O cho điều đó. Các diễn viên tự động để Các loại chuỗi được coi là diễn viên 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 diễn viên của riêng bạn để thay thế soi kèo bóng đá truoctran diễn viên 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. soi kèo bóng đá truoctran 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 rằng bạn Nên suy nghĩ hai lần về việc liệu đó có phải là soi kèo bóng đá truoctran ý kiến hay. (soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đối số thuộc loại khác là tự động là soi kèo bóng đá truoctran 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 diễn viên 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 diễn viên trong danh mục hệ thốngpg_cast
23544_2380223827_23837(x). Ký hiệu này trên thực tế không có gì hơn cũng không nhỏ hơn soi kèo bóng đá truoctran cuộc gọi của chức năng thực hiện diễn viên; nó là Không được coi là đặc biệt như soi kèo bóng đá truoctran diễn viên. 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 soi kèo bóng đá truoctran 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à soi kèo bóng đá truoctran 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 diễn viên mà không phù hợp với nó với soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran kiểu dữ liệu vàpg_castCung cấp soi kèo bóng đá truoctran có thể sử dụng được cho loại này từ loại này củax25055_25298pg_castmục nhập nhưng diễn viên sẽ đến hoặc từ soi kèo bóng đá truoctran loại chuỗi, Cuộc gọi sẽ được hiểu là diễn viên chuyển đổi I/O. Cái này Ngoại lệ cho phép các diễn viên chuyển đổi I/O được gọi bằng cách sử dụng Cú pháp chức năng.
Lưu ý:Ngoài ra còn có ngoại lệ cho ngoại lệ: Các diễn viên chuyển đổi I/O từ các loại tổng hợp sang loại chuỗi không thể được gọi bằng cách sử dụng cú pháp chức năng, nhưng phải được viết bằng cú pháp đúc rõ ràng (soi kèo bóng đá truoctran trong haiCasthoặc::Ký hiệu). Ngoại lệ này đã được thêm vào vì sau khi giới thiệu Các phôi chuyển đổi I/O được cung cấp tự động, nó cũng được tìm thấy dễ dàng vô tình gọi soi kèo bóng đá truoctran diễn viên như vậy khi soi kèo bóng đá truoctran chức năng hoặc Tham chiếu cột được dự định.
Để tạo soi kèo bóng đá truoctran bài tập được chọn từ loạiBigintđể soi kèo bóng đá truoctranINT4Sử dụng chức năngINT4 (BIGINT):
26543_26617
(soi kèo bóng đá truoctran này đã được xác định trước trong hệ thống.)