The BYTES
data type stores binary strings of variable length.
Aliases
In CockroachDB, the following are aliases for BYTES
:
BYTEA
BLOB
Syntax
To express a byte array constant, see the section on
byte array literals for more
details. For example, the following three are equivalent literals for the same
byte array: b'abc'
, b'\141\142\143'
, b'\x61\x62\x63'
.
In addition to this syntax, CockroachDB also supports using
string literals, including the
syntax '...'
, e'...'
and x'....'
in contexts where a byte array
is otherwise expected.
Size
The size of a BYTES
value is variable, but it's recommended to keep values under 1 MB to ensure performance. Above that threshold, write amplification and other considerations may cause significant performance degradation.
Example
> CREATE TABLE bytes (a INT PRIMARY KEY, b BYTES);
> -- explicitly typed BYTES literals
> INSERT INTO bytes VALUES (1, b'\141\142\143'), (2, b'\x61\x62\x63'), (3, b'\141\x62\c');
> -- string literal implicitly typed as BYTES
> INSERT INTO bytes VALUES (4, 'abc');
> SELECT * FROM bytes;
+---+-----+
| a | b |
+---+-----+
| 1 | abc |
| 2 | abc |
| 3 | abc |
| 4 | abc |
+---+-----+
(4 rows)
Supported Conversions
BYTES
values can be
cast explicitly to
STRING
. The conversion verifies that the byte array contains only
valid UTF-8 byte sequences; an error is reported otherwise.
STRING
values can be cast explicitly to BYTES
. This conversion
always succeeds.