本節描述那些檢查和操作二進制字符串的函數和操作符,這是類型bytea
的值。 其中許多函數在用途和語法上都與上一節中描述的文本字符串函數等效。
SQL定義了一些使用關鍵字而不是逗號來分割參數的串函數。詳情請見SQL二進制串函數和操作符表。本數據庫也提供了這些函數使用常規函數調用語法的版本。
SQL二進制串函數和操作符
連接兩個二進制字符串。
|
返回二進制字符串中的位數 (8 倍于
|
返回二進制字符串中的字節數。
|
將
|
返回指定的
|
提取
|
從
|
這是
|
還有一些二進制串處理函數可以使用,在其他二進制串函數表列出。 其中有一些是在內部使用,用于實現 SQL 二進制串函數和操作符表列出的 SQL 標準串函數。
其他二進制串函數
從
|
從二進制字符串中提取 n'th 位。
|
從二進制字符串中提取 n'th 字節。
|
返回二進制字符串中的字節數。
|
返回二進制字符串中的字符數,假設它是給定
|
計算二進制字符串的MD5 hash,結果以十六進制形式寫入。
|
設置二進制字符串中的n'th位為
|
設置二進制字符串中的 n'th 字節到
|
計算二進制字符串的 SHA-224 hash。
|
計算二進制字符串的 SHA-256 hash。
|
計算二進制字符串的 SHA-384 hash。
|
計算二進制字符串的 SHA-512 hash。
|
從
|
函數get_byte
和set_byte
把一個二進制串中的一個字節計數為字節 0。 函數get_bit
和set_bit
在每一個字節中從右邊起計數位; 例如位 0 是第一個字節的最低有效位,而位 15 是第二個字節的最高有效位。
由于歷史原因,函數md5
返回的是一個十六進制編碼的text
值,而 SHA-2 函數返回類型bytea
。 可以使用函數encode
和decode
在兩者之間轉換。 例如encode(sha256('abc'),'hex')
可以得到一個十六進制編碼的文本表示,或者decode(md5('abc'), 'hex')
得到一個bytea
值。
用于在不同字符集(編碼)之間轉換字符串的函數,以及用于以文本形式表示任意二進制數據的函數,在 Text/Binary String Conversion Functions 表中顯示。 對于這些函數,類型為text
的參數或結果表示為數據庫的默認編碼,而類型為bytea
的參數或結果表示為由另一個參數命名的編碼。
Text/Binary String Conversion Functions
將表示編碼
|
將表示編碼
|
將
|
將二進制數據編碼成文本表示;支持的
|
從文本表示中解碼二進制數據;支持的
|
encode
和 decode
函數支持以下文本格式:
base64
base64
格式是 RFC 2045 Section 6.8。 根據 RFC,編碼的行被分割為 76 個字符。但是,作為 MIME CRLF 行結束標記的替代,只有換行符用于行結束。decode
函數忽略回車、換行、空格和制表符。 否則,當decode
被提供了無效的 base64 數據—包括結尾填充不正確時。escape
escape
格式將零字節和設置了高位的字節轉換為八進制轉義序列(\``nnn
),并將反斜杠加倍。 其他字節值按字面意思表示。decode
函數如果反斜杠后面沒有第二個反斜杠或三個八進制數字將引發錯誤;它接受其他未變化的字節值。hex
hex
格式將每 4 位數據表示為一個十六進制數字,從0
到f
,首先寫入每個字節的高階數字。encode
函數輸出a
-f
的十六進制小寫數字。 因為數據的最小單位是 8 位,所以encode
總是返回偶數個字符。decode
函數接受大寫或小寫的a
-f
字符。 當decode
給出無效的十六進制數據—時將引發一個錯誤,包括給定奇數個字符時。