Variable-length string for binary data with limit up to 65,535 bytes.

See also: Data Types in 10.6 ES, in 10.5 ES, and in 10.4 ES



The following are synonyms for VARBINARY:

  • RAW



For our example of VARBINARY we picked a maximum size that avoids overflowing the maximum row size (65535). Keep in mind that a multi-byte character set would need more space in the row than a single-byte character set. We also avoid the auto-conversion of a VARBINARY into a BLOB, MEDIUMBLOB, or LONGBLOB that can happen when STRICT_TRANS_TABLES is not set in the SQL_MODE.

The example:

CREATE TABLE varbinary_example (
  description VARCHAR(20),
  example VARBINARY(65511)
) DEFAULT CHARSET=latin1; -- One byte per char makes the examples clearer
INSERT INTO varbinary_example VALUES
  ('Normal foo', 'foo'),
  ('Trailing spaces foo', 'foo      '),
  ('NULLed', NULL),
  ('Empty', ''),
  ('Maximum', RPAD('', 65511, CHAR(7)));
SELECT description, LENGTH(example) AS length
  FROM varbinary_example;
| description         | length |
| Normal foo          |      3 |
| Trailing spaces foo |      9 |
| NULLed              |   NULL |
| Empty               |      0 |
| Maximum             |  65511 |

Data too long

When SQL_MODE is strict (the default) a value is considered "too long" when its length exceeds the size of the data type, and an error is generated.

Example of data too long behavior for VARBINARY:

TRUNCATE varbinary_example;

INSERT INTO varbinary_example VALUES
  ('Overflow', RPAD('', 65512, CHAR(7)));
ERROR 1406 (22001): Data too long for column 'example' at row 1


Release Series


10.6 Enterprise

  • Present starting in MariaDB Enterprise Server 10.6.4-1.

10.5 Enterprise

  • Present starting in MariaDB Enterprise Server 10.5.3-1.

10.4 Enterprise

  • Present starting in MariaDB Enterprise Server 10.4.6-1.