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

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

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

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

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 đá c1 thực tế Chuỗi nhị kèo bóng đá c1 có độ dài thay đổi

Chuỗi nhị kèo bóng đá c1 là một chuỗi các octet (hoặc byte). Chuỗi nhị kèo bóng đá c1 được kèo bóng đá c1 biệt với chuỗi nhân vật theo hai cách. Đầu tiên, chuỗi nhị kèo bóng đá c1 đặc biệt cho phép lưu trữ octet có giá trị 0 và kháckhông thể inHàngoctets (thường là octet ngoài phạm vi thập kèo bóng đá c1 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. Thứ hai, các hoạt động trên các chuỗi nhị kèo bóng đá c1 xử lý các byte thực tế, trong khi việc xử lý các chuỗi ký tự phụ thuộc vào cài đặt địa phương. Nói tóm lại, chuỗi nhị kèo bóng đá c1 phù hợp để lưu trữ dữ liệu mà lập trình viên nghĩ làHồiByte 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 kèo bóng đá c1:HexHồiĐịnh dạng vàPostgreSQLs lịch sửHồiEscapeHồiĐịnh dạng. Cả hai điều này luôn được chấp nhận trên đầu vào. Định dạng đầu kèo bóng đá c1 phụ thuộc vào tham số cấu hìnhbytea_output; Mặc định là hex. (Lưu ý rằng định dạng hex đã được giới thiệu trongPostgreSQL9.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 đá c1 khác, được gọi làBlobhoặcĐối tượng lớn nhị kèo bóng đá c1. Đị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 đá c1 là 2 chữ số thập lục kèo bóng đá c1 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 đá c1 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 đá c1 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 thoát, do đó, việc sử dụng nó được ưu tiên.

Ví dụ:

Đặt bytea_output = 'hex';

Chọn '\ xdeadbeef' :: bytea;
   bytea
------------
 \ xdeadbeef

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

TheEscapeHồiĐịnh dạng là truyền thốngPostgreSQLĐịnh dạng chobytea15491_16113

Khi vàobyteaGiá trị ở định dạng thoát, octet của các giá trị nhất địnhphảiđược thoát kèo bóng đá c1, 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ản thân Backslash (Giá trị thập kèo bóng đá c1 Octet 92) có thể được biểu thị bằng cách lặp lại đôi.Bảng 8.7Hiển thị các ký tự phải được thoát và đưa kèo bóng đá c1 các chuỗi thoát thay thế khi áp dụng.

Bảng 8.7.byteaOctets thoát kèo bóng đá c1 theo nghĩa đen

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

Yêu cầu thoátkhông thể in19089_19199

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 đá c1 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. Cái gì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 đá c1 đơn giản. Tuy nhiên,19770_19777Hà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 thể hiện trongBảng 8.7được thực hiện bởi chức năng đó.

Trong một số bối cảnh, các dấu gạch chéo ngược phải được nhân đôi so với những gì được hiển thị ở trên, bởi vì trình kèo bóng đá c1 tích cú pháp theo nghĩa lượng chuỗi chung cũng sẽ làm giảm các cặp dấu gạch chéo ngược thành một ký tự dữ liệu; nhìn thấyPhần 4.1.2.1.

byteaoctet được xuất kèo bóng đá c1 trongHexĐịnh dạng theo mặc định. Nếu bạn thay đổibytea_outputđếnEscape, Hồikhông thể inHồioctet đượ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ể inxôngoctet được xuất kèo bóng đá c1 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';

Chọn 'ABC \ 153 \ 154 \ 155 \ 052 \ 251 \ 124' :: bytea;
     bytea
----------------
 ABC KLM *\ 251T

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

Bảng 8.8.byteaoctet thoát kèo bóng đá c1 đầu kèo bóng đá c1

Giá trị octet thập kèo bóng đá c1 Mô tả Biểu diễn đầu kèo bóng đá c1 thoát kèo bóng đá c1 Ví dụ Kết quả đầu kèo bóng đá c1
92 Backslash \ '\ 134' :: bytea \
0 đến 31 và 127 đến 255 Hồikhông thể inoctets \xxx(giá trị bát kèo bóng đá c1) '\ 001' :: bytea \ 001
32 đến 126 có thể inoctets Đại diện bộ ký tự khách '\ 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ạnbytea23442_23578

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài kèo bóng đá c1 không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài kèo bóng đá c1.