本文介紹了PolarDB PostgreSQL版(兼容Oracle)支持的二進制類型。

二進制字符串可以存儲以下數(shù)據(jù)類型。

表 1. 二進制大對象
名稱存儲大小描述
BINARY二進制字符串的長度。定長二進制字符串,長度介于1和8300之間。
BLOB實際二進制字符串加1字節(jié)(如果二進制字符串小于127字節(jié))或4字節(jié)(如果二進制字符串大于等于127字節(jié))。可變長度的二進制字符串。
VARBINARY二進制字符串的長度。可變長度的二進制字符串,長度介于1和8300之間。
BYTEA1或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ù)谋苊膺@種格式。