PostgreSQL: kèo chấp bóng đá hôm nay liệu: 9.4: PostgreSQL | |||
---|---|---|---|
prev | UP | Chương 8. Kiểu dữ tỷ lệ kèo bóng đá | NEXT |
ThebyteaKiểu dữ liệu cho phép lưu trữ các chuỗi nhị tỷ lệ kèo bóng đá; nhìn thấyBảng 8-6.
Bảng 8-6. Kiểu dữ liệu nhị tỷ lệ kèo bóng đá
tên | Kích thước lưu trữ | Mô tả |
---|---|---|
bytea | 1 hoặc 4 byte cộng với chuỗi nhị tỷ lệ kèo bóng đá thực tế | Chuỗi nhị tỷ lệ kèo bóng đá có độ dài biến đổi |
Một chuỗi nhị tỷ lệ kèo bóng đá là một chuỗi các octet (hoặc byte). Chuỗi nhị tỷ lệ kèo bóng đá được tỷ lệ kèo bóng đá biệt với chuỗi nhân vật theo hai cách. Đầu tiên, chuỗi nhị tỷ lệ kèo bóng đá đặc biệt cho phép lưu trữ octet có giá trị 0 và khác"Không thể in"octets (thường là octet ngoài phạm vi thập tỷ lệ kèo bóng đá 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ị tỷ lệ kèo bóng đá 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ị tỷ lệ kèo bóng đá phù hợp để lưu trữ dữ liệu mà lập trình viên nghĩ là"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:"Hex"Định dạng và12083_12095s 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. Định dạng đầu ra 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ị tỷ lệ kèo bóng đá khác, được gọi làBlobhoặcĐối tượng lớn nhị tỷ lệ kèo bóng đá. Đị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.
The"Hex"Định dạng mã hóa dữ liệu nhị tỷ lệ kèo bóng đá là 2 chữ số thập lục tỷ lệ kèo bóng đá 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(để tỷ lệ kèo bóng đá 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.113336_13507\ 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ụ:
Chọn '\ XDeadBeef';
The"Escape"Đị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ị tỷ lệ kèo bóng đá 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. Nếu, từ quan điểm của ứng dụng, đại diện cho các byte là ký tự có ý nghĩa, thì đại diện này có thể thuận tiện. Nhưng trong thực tế, nó thường gây nhầm lẫn bởi vì nó làm mờ đi sự khác biệt giữa chuỗi nhị tỷ lệ kèo bóng đá và chuỗi ký tự, và cơ chế thoát đặc biệt được chọn có phần khó sử dụng. Do đó, định dạng này có lẽ nên tránh cho hầu hết các ứng dụng mới.
Khi vào14739_14746Giá 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ản thân Backslash (Giá trị thập tỷ lệ kèo bóng đá 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 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 tỷ lệ kèo bóng đá | 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ể in"octets | '\xxx '(giá trị bát tỷ lệ kèo bóng đá) | Chọn '\ 001' :: bytea; | \ x01 |
Yêu cầu 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 nào theo lệnh SQL. Trình tỷ lệ kèo bóng đá 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ìbytea17194_17299byteaHà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 tỷ lệ kèo bóng đá tích cú pháp theo nghĩa đen của 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.
byteaoctets là đầu ra trongHexĐịnh dạng theo mặc định. Nếu bạn thay đổibytea_outputđếnEscape, "Không thể in"octet được chuyển đổi thành giá trị octal ba chữ số tương đương của chúng và đi trước một dấu gạch chéo ngược. Hầu hết"Có thể in"18180_18268
Đặt bytea_output = 'Escape'; Chọn 'ABC \ 153 \ 154 \ 155 \ 052 \ 251 \ 124' :: bytea; bytea ---------------- ABC KLM *\ 251T
octet có giá trị thập tỷ lệ kèo bóng đá 92 (dấu gạch chéo ngược) đượ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 tỷ lệ kèo bóng đá | 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ể in"octets | \19309_19314(giá trị bát tỷ lệ kèo bóng đá) | Chọn '\ 001' :: bytea; | \ 001 |
32 đến 126 | "có thể in"octets | Biểu diễn bộ ký tự máy khách | Chọn '\ 176' :: bytea; | ~ |
Tùy thuộc vào mặt 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ữ tỷ lệ kèo bóng đá và vận chuyển nếu giao diện của bạn tự động dịch những thứ này.