日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

二進制串函數和操作符

本節描述那些檢查和操作二進制字符串的函數和操作符,這是類型bytea的值。 其中許多函數在用途和語法上都與上一節中描述的文本字符串函數等效。

SQL定義了一些使用關鍵字而不是逗號來分割參數的串函數。詳情請見SQL二進制串函數和操作符表。本數據庫也提供了這些函數使用常規函數調用語法的版本。

SQL二進制串函數和操作符

bytea || byteabytea

連接兩個二進制字符串。

'\x123456'::bytea || '\x789a00bcde'::bytea\x123456789a00bcde

bit_length ( bytea ) → integer

返回二進制字符串中的位數 (8 倍于 octet_length).

bit_length('\x123456'::bytea)24

octet_length ( bytea ) → integer

返回二進制字符串中的字節數。

octet_length('\x123456'::bytea)3

overlay ( bytes bytea PLACING newsubstring bytea FROM start integer [ FOR count integer ] ) → bytea

bytes的子字符串替換為newsubstring,該子字符串從start字節開始,并以count字節擴展。 如果忽略了count,則默認為newsubstring的長度。

overlay('\x1234567890'::bytea placing '\002\003'::bytea from 2 for 3)\x12020390

position ( substring bytea IN bytes bytea ) → integer

返回指定的substringbytes內的起始索引,如果不存在,則為零。

position('\x5678'::bytea in '\x1234567890'::bytea)3

substring ( bytes bytea [ FROM start integer ] [ FOR count integer ] ) → bytea

提取bytesstart字節開始的子字符串,如果指定了,并且在count字節之后停止,如果指定了的話。 至少提供startcount中的一個。

substring('\x1234567890'::bytea from 3 for 2)\x5678

trim ( [ BOTH ] bytesremoved bytea FROM bytes bytea ) → bytea

bytes的開始和結束處刪除bytesremoved中只包含字節的最長字符串。

trim('\x9012'::bytea from '\x1234567890'::bytea)\x345678

trim ( [ BOTH ] [ FROM ] bytes bytea, bytesremoved bytea ) → bytea

這是trim()的非標準語法。

trim(both from '\x1234567890'::bytea, '\x9012'::bytea)\x345678

還有一些二進制串處理函數可以使用,在其他二進制串函數表列出。 其中有一些是在內部使用,用于實現 SQL 二進制串函數和操作符表列出的 SQL 標準串函數。

其他二進制串函數

btrim ( bytes bytea, bytesremoved bytea ) → bytea

bytes的開始和結束處刪除只包含bytesremoved中出現的字節的最長字符串

btrim('\x1234567890'::bytea, '\x9012'::bytea)\x345678

get_bit ( bytes bytea, n bigint ) → integer

從二進制字符串中提取 n'th 位。

get_bit('\x1234567890'::bytea, 30)1

get_byte ( bytes bytea, n integer ) → integer

從二進制字符串中提取 n'th 字節。

get_byte('\x1234567890'::bytea, 4)144

length ( bytea ) → integer

返回二進制字符串中的字節數。

length('\x1234567890'::bytea)5

length ( bytes bytea, encoding name ) → integer

返回二進制字符串中的字符數,假設它是給定encoding中的文本。

length('jose'::bytea, 'UTF8')4

md5 ( bytea ) → text

計算二進制字符串的MD5 hash,結果以十六進制形式寫入。

md5('Th\000omas'::bytea)8ab2d3c9689aaf18b4958c334c82d8b1

set_bit ( bytes bytea, n bigint, newvalue integer ) → bytea

設置二進制字符串中的n'th位為newvalue。

set_bit('\x1234567890'::bytea, 30, 0)\x1234563890

set_byte ( bytes bytea, n integer, newvalue integer ) → bytea

設置二進制字符串中的 n'th 字節到 newvalue。

set_byte('\x1234567890'::bytea, 4, 64)\x1234567840

sha224 ( bytea ) → bytea

計算二進制字符串的 SHA-224 hash。

sha224('abc'::bytea)\x23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7

sha256 ( bytea ) → bytea

計算二進制字符串的 SHA-256 hash。

sha256('abc'::bytea)\xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

sha384 ( bytea ) → bytea

計算二進制字符串的 SHA-384 hash。

sha384('abc'::bytea)\xcb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7

sha512 ( bytea ) → bytea

計算二進制字符串的 SHA-512 hash。

sha512('abc'::bytea)\xddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f

substr ( bytes bytea, start integer [, count integer ] ) → bytea

start字節開始提取bytes的子字符串,并擴展為count字節,如果這是指定的。 (與 substring(bytesstartcount) 相同)

substr('\x1234567890'::bytea, 3, 2)\x5678

函數get_byteset_byte把一個二進制串中的一個字節計數為字節 0。 函數get_bitset_bit在每一個字節中從右邊起計數位; 例如位 0 是第一個字節的最低有效位,而位 15 是第二個字節的最高有效位。

由于歷史原因,函數md5返回的是一個十六進制編碼的text值,而 SHA-2 函數返回類型bytea。 可以使用函數encodedecode在兩者之間轉換。 例如encode(sha256('abc'),'hex')可以得到一個十六進制編碼的文本表示,或者decode(md5('abc'), 'hex')得到一個bytea 值。

用于在不同字符集(編碼)之間轉換字符串的函數,以及用于以文本形式表示任意二進制數據的函數,在 Text/Binary String Conversion Functions 表中顯示。 對于這些函數,類型為text的參數或結果表示為數據庫的默認編碼,而類型為bytea的參數或結果表示為由另一個參數命名的編碼。

Text/Binary String Conversion Functions

convert ( bytes bytea, src_encoding name, dest_encoding name ) → bytea

將表示編碼src_encoding的文本的二進制字符串轉換為編碼dest_encoding的二進制字符串

convert('text_in_utf8', 'UTF8', 'LATIN1')\x746578745f696e5f75746638

convert_from ( bytes bytea, src_encoding name ) → text

將表示編碼src_encoding的文本的二進制字符串轉換為數據庫編碼中的text。 。

convert_from('text_in_utf8', 'UTF8')text_in_utf8

convert_to ( string text, dest_encoding name ) → bytea

text字符串(數據庫編碼)轉換為編碼dest_encoding中編碼的二進制字符串。

convert_to('some_text', 'UTF8')\x736f6d655f74657874

encode ( bytes bytea, format text ) → text

將二進制數據編碼成文本表示;支持的format值為: base64, escape, hex.

encode('123\000\001', 'base64')MTIzAAE=

decode ( string text, format text ) → bytea

從文本表示中解碼二進制數據;支持的format值與encode相同。

decode('MTIzAAE=', 'base64')\x3132330001

encodedecode 函數支持以下文本格式:

  • base64 base64格式是 RFC 2045 Section 6.8。 根據 RFC,編碼的行被分割為 76 個字符。但是,作為 MIME CRLF 行結束標記的替代,只有換行符用于行結束。 decode函數忽略回車、換行、空格和制表符。 否則,當decode被提供了無效的 base64 數據—包括結尾填充不正確時。

  • escape escape格式將零字節和設置了高位的字節轉換為八進制轉義序列(\``nnn),并將反斜杠加倍。 其他字節值按字面意思表示。 decode函數如果反斜杠后面沒有第二個反斜杠或三個八進制數字將引發錯誤;它接受其他未變化的字節值。

  • hexhex格式將每 4 位數據表示為一個十六進制數字,從0f,首先寫入每個字節的高階數字。 encode函數輸出a-f的十六進制小寫數字。 因為數據的最小單位是 8 位,所以encode總是返回偶數個字符。 decode函數接受大寫或小寫的a-f字符。 當decode給出無效的十六進制數據—時將引發一個錯誤,包括給定奇數個字符時。