本文介紹了PolarDB PostgreSQL版(兼容Oracle)支持的二進制類型。
二進制字符串可以存儲以下數(shù)據(jù)類型。
名稱 | 存儲大小 | 描述 |
---|---|---|
BINARY | 二進制字符串的長度。 | 定長二進制字符串,長度介于1和8300之間。 |
BLOB | 實際二進制字符串加1字節(jié)(如果二進制字符串小于127字節(jié))或4字節(jié)(如果二進制字符串大于等于127字節(jié))。 | 可變長度的二進制字符串。 |
VARBINARY | 二進制字符串的長度。 | 可變長度的二進制字符串,長度介于1和8300之間。 |
BYTEA | 1或4字節(jié)加上實際的二進制字符串。 | 變長的二進制字符串。 |
二進制串是一個8位字節(jié)(或字節(jié)的序列)。與字符串相比,二進制串有兩點不同:
- 二進制串允許存放值為0的8位字節(jié)和其他無法打印顯示的八位字節(jié)(定義的范圍超過32~126)。
- 在二進制串上進行的操作實際是處理字節(jié),與之相反的是對字符串的編碼和處理取決于本地設置。
BYTEA類型
BYTEA類型支持兩種輸入輸出的外部格式:
hex
格式和PostgreSQL的歷史escape
格式。hex
格式將二進制數(shù)據(jù)編碼為每字節(jié)2位十六進制數(shù)字, 最重要的四位(半字節(jié))放在開始。整條字符串以\x
開始 (與轉義格式相區(qū)別)。escape
格式是一種傳統(tǒng)的PostgreSQL格式。它采用以ASCII字符序列來表示二進制串的方法,同時將那些無法表示成ASCII字符的二進制串轉換成特殊的轉義序列。從應用的角度看,如果代表字節(jié)的字符有意義,則這種表示方法會很方便。但實際上,這樣做會模糊二進制字符串和字符字符串之間的區(qū)別,從而造成困擾, 同時篩選出的轉義機制會顯得很臃腫。因此對一些新應用應該恰當?shù)谋苊膺@種格式。