This section describes functions and operators for examining and
manipulating values of type bytea.
SQL defines some string functions that use
key words, rather than commas, to separate
arguments. Details are in
Table 9-8.
PostgreSQL also provides versions of these functions
that use the regular function invocation syntax
(see Table 9-9).
Table 9-8. SQL Binary String Functions and Operators
| Function | Return Type | Description | Example | Result |
|---|
| string ||
string | bytea | String concatenation
| E'\\\\Post'::bytea || E'\\047gres\\000'::bytea | \\Post'gres\000 |
get_bit(string, offset) | int | Extract bit from string
| get_bit(E'Th\\000omas'::bytea, 45) | 1 |
get_byte(string, offset) | int | Extract byte from string
| get_byte(E'Th\\000omas'::bytea, 4) | 109 |
octet_length(string) | int | Number of bytes in binary string | octet_length(E'jo\\000se'::bytea) | 5 |
position(substring in string) | int | Location of specified substring | position(E'\\000om'::bytea in E'Th\\000omas'::bytea) | 3 |
set_bit(string,
offset, newvalue) | bytea | Set bit in string
| set_bit(E'Th\\000omas'::bytea, 45, 0) | Th\000omAs |
set_byte(string,
offset, newvalue) | bytea | Set byte in string
| set_byte(E'Th\\000omas'::bytea, 4, 64) | Th\000o@as |
substring(string [from int] [for int]) | bytea | Extract substring
| substring(E'Th\\000omas'::bytea from 2 for 3) | h\000o |
trim([both]
bytes from
string)
| bytea | Remove the longest string containing only the bytes in
bytes from the start
and end of string
| trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) | Tom |
Additional binary string manipulation functions are available and
are listed in Table 9-9. Some
of them are used internally to implement the
SQL-standard string functions listed in Table 9-8.
Table 9-9. Other Binary String Functions
| Function | Return Type | Description | Example | Result |
|---|
btrim(string
bytea, bytes bytea) | bytea | Remove the longest string consisting only of bytes
in bytes from the start and end of
string
| btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) | trim |
decode(string text,
format text)
| bytea | Decode binary data from textual representation in string.
Options for format are same as in encode.
| decode(E'123\\000456', 'escape') | 123\000456 |
encode(data bytea,
format text)
| text | Encode binary data into a textual representation. Supported
formats are: base64, hex, escape.
escape converts zero bytes and high-bit-set bytes to
octal sequences (\nnn) and
doubles backslashes.
| encode(E'123\\000456'::bytea, 'escape') | 123\000456 |
length(string) | int | Length of binary string
| length(E'jo\\000se'::bytea) | 5 |
md5(string) | text | Calculates the MD5 hash of string,
returning the result in hexadecimal
| md5(E'Th\\000omas'::bytea) | 8ab2d3c9689aaf18 b4958c334c82d8b1 |