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

8.4. Kiểu dữ liệu nhị kèo bóng đá pháp

ThebyteaKiểu dữ liệu cho phép lưu trữ các chuỗi nhị kèo bóng đá pháp; nhìn thấyBảng 8.6.

Bảng 8.6. Kiểu dữ liệu nhị kèo bóng đá pháp

tên Kích thước lưu trữ Mô tả
bytea 1 hoặc 4 byte cộng với chuỗi nhị kèo bóng đá pháp thực tế Chuỗi nhị kèo bóng đá pháp có độ dài thay đổi

Chuỗi nhị kèo bóng đá pháp là một chuỗi các octet (hoặc byte). Chuỗi nhị kèo bóng đá pháp được kèo bóng đá pháp biệt với chuỗi nhân vật theo hai cách.không thể inoctets (thường là octet ngoài phạm vi thập kèo bóng đá pháp 32 đến 126). Chuỗi ký tự không cho phép các octet không, và cũng không cho phép bất kỳ giá trị và trình tự octet nào khác của các giá trị octet không hợp lệ theo mã hóa bộ ký tự đã chọn của cơ sở dữ liệu.Byte thô, trong khi các chuỗi ký tự phù hợp để lưu trữ văn bản.

ThebyteaLoại hỗ trợ hai định dạng cho đầu vào và đầu ra:MạnhHexĐịnh dạng vàPostgreSQL's lịch sửEscapeĐịnh dạng. Cả hai điều này luôn được chấp nhận trên đầu vào.bytea_output; Mặc định là hex.POSTGRESQL9.0; Các phiên bản trước và một số công cụ không hiểu nó.)

TheSQLTiêu chuẩn xác định một loại chuỗi nhị kèo bóng đá pháp khác, được gọi làBlobhoặcĐối tượng lớn nhị kèo bóng đá pháp. Định dạng đầu vào khác vớibytea, nhưng các chức năng và toán tử được cung cấp chủ yếu là giống nhau.

8.4.1.byteaĐịnh dạng hex

TheHexĐịnh dạng mã hóa dữ liệu nhị kèo bóng đá pháp là 2 chữ số thập lục kèo bóng đá pháp trên byte, Nibble quan trọng nhất trước tiên. Toàn bộ chuỗi được đi trước bởi chuỗi\ x(để kèo bóng đá pháp biệt với định dạng thoát). Trong một số bối cảnh, dấu gạch chéo ngược ban đầu có thể cần phải được thoát ra bằng cách nhân đôi nó (xemPhần 4.1.2.1). Đối với đầu vào, các chữ số thập lục kèo bóng đá pháp có thể là chữ thường trên hoặc chữ thường và khoảng trắng được cho phép giữa các cặp chữ số (nhưng không phải trong một cặp chữ số cũng như trong phần bắt đầu\ xTrình tự). Định dạng HEX tương thích với một loạt các ứng dụng và giao thức bên ngoài, và nó có xu hướng chuyển đổi nhanh hơn định dạng Escape, do đó, việc sử dụng nó được ưu tiên.

Ví dụ:

Đặt bytea_output = 'hex';

8.4.2.byteađịnh dạng thoát

TheEscapeHồiĐịnh dạng là truyền thốngPostgreSQLĐịnh dạng chobyteaLoại. Nó thực hiện cách tiếp cận đại diện cho một chuỗi nhị kèo bóng đá pháp dưới dạng một chuỗi các ký tự ASCII, trong khi chuyển đổi các byte đó không thể được biểu diễn dưới dạng ký tự ASCII thành các chuỗi thoát đặc biệt.

Khi vàobyteaGiá trị ở định dạng thoát, octet của các giá trị nhất địnhphảiđược thoát ra, trong khi tất cả các giá trị octetCANđược thoát ra. Nói chung, để thoát khỏi một octet, chuyển đổi nó thành giá trị octal ba chữ số của nó và đi trước nó bằng một dấu gạch chéo ngược.Bảng 8.7Hiển thị các ký tự phải được thoát và đưa ra các chuỗi thoát thay thế nếu có.

Bảng 8.7.byteaOctets thoát ra theo nghĩa đen

Giá trị octet thập kèo bóng đá pháp Mô tả Biểu diễn đầu vào thoát ra Ví dụ Đại diện Hex
0 Zero octet '\ 000' Chọn '\ 000' :: bytea; \ x00
39 Trích dẫn đơn '' '' 'hoặc'\ 047' Chọn '' '' ':: bytea; \ x27
92 Backslash '\'hoặc'\ 134' Chọn '\' :: bytea; \ x5c
0 đến 31 và 127 đến 255 không thể inoctets '\xxx '(giá trị bát kèo bóng đá pháp) Chọn '\ 001' :: bytea; \ x01

Yêu cầu trốn thoátkhông thể inoctet khác nhau tùy thuộc vào cài đặt địa phương. Trong một số trường hợp, bạn có thể thoát khỏi việc để chúng không được xác định.

Lý do mà các trích dẫn đơn phải được nhân đôi, như thể hiện trongBảng 8.7, là điều này đúng với bất kỳ chuỗi theo nghĩa đen nào trong lệnh SQL. Trình kèo bóng đá pháp tích cú pháp theo nghĩa chính chung tiêu thụ các trích dẫn đơn ngoài cùng và giảm bất kỳ cặp trích dẫn đơn nào cho một ký tự dữ liệu.byteaHàm đầu vào chỉ là một trích dẫn duy nhất, nó coi là một ký tự dữ kèo bóng đá pháp đơn giản. Tuy nhiên,byteaHàm đầu vào coi dấu gạch chéo ngược là đặc biệt và các hành vi khác được hiển thị trongBảng 8.7được thực hiện bởi chức năng đó.

20385_20573Phần 4.1.2.1.

byteaoctets là đầu ra trongHexĐịnh dạng theo mặc định. Nếu bạn thay đổibytea_outputđếnEscape, không thể inoctet được chuyển đổi thành giá trị octal ba chữ số tương đương của chúng và trước một dấu gạch chéo ngược. Hầu hếtcó thể inHồioctet được xuất ra bởi biểu diễn tiêu chuẩn của chúng trong bộ ký tự máy khách, ví dụ:

Đặt bytea_output = 'Escape';

octet có giá trị thập kèo bóng đá pháp 92 (Backslash) được nhân đôi trong đầu ra. Chi tiết trongBảng 8.8.

Bảng 8.8.byteaoctet thoát ra đầu ra

Giá trị octet thập kèo bóng đá pháp Mô tả Biểu diễn đầu ra thoát ra Ví dụ Kết quả đầu ra
92 Backslash \ Chọn '\ 134' :: bytea; \
0 đến 31 và 127 đến 255 không thể inHồioctets \xxx(giá trị bát kèo bóng đá pháp) Chọn '\ 001' :: bytea; \ 001
32 đến 126 Mạnhcó thể inxôngoctets Đại diện bộ ký tự khách Chọn '\ 176' :: bytea; ~

Tùy thuộc vào đầu trước vàoPostgreSQLBạn sử dụng, bạn có thể có thêm việc phải làm về mặt thoát khỏi và không giới hạnbyteaChuỗi. Ví dụ: bạn cũng có thể phải thoát khỏi nguồn cấp dữ kèo bóng đá pháp và vận chuyển nếu giao diện của bạn tự động dịch những thứ này.