Skip to content

Language Primitives

/

Data types

Bytes

Bytes represent raw binary data. While most data in SurrealDB is stored as strings or structured values, bytes are useful when working with encoded data such as hashes, binary identifiers, or compact representations.

A bytes value is stored inside its record, so it is read and written together with the rest of the record's fields. For whole files such as images or documents, the experimental files feature stores the content in a bucket held in memory, on disk or in cloud object storage. A record field then holds a file pointer such as f"images:/cat.jpg", and calling .get() on the pointer returns the file's content as bytes.

Bytes can be created by casting from a string, and are displayed using hexadecimal encoding.

<bytes>"I am some bytes";
Output
b"4920616D20736F6D65206279746573"

Available since: v2.3.0

Conversions can be performed between bytes, strings, and arrays.

-- array<int> to bytes to string
<string><bytes>[99, 101, 108, 108, 97, 114, 32, 100, 111, 111, 114];
-- string to bytes to array<int>
<array><bytes>"Hobbits";
Output
-------- Query --------

'cellar door'

-------- Query --------

[72, 111, 98, 98, 105, 116, 115]

Available since: v3.0.0

A string preceded by a b prefix can be turned into bytes as long as the string represents a hexadecimal value.

b"486F6262697473";

<string>b"486F6262697473";

<string>b"This won't work though";
Output
-------- Query --------

b"486F6262697473";

-------- Query --------

'Hobbits'

-------- Query --------

"There was a problem with the database: Parse error: Unexpected
  character `T` expected hexidecimal digit
 --> [1:11]
  |
1 | <string>b\"This won't work though\";
  |           ^ 
"

Was this page helpful?