VARCHAR

Overview

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

USAGE

VARCHAR(<number_of_bytes_per_value>)

DETAILS

Data Type

Minimum Number of Bytes

Maximum Number of Bytes

VARCHAR

0 (if omitted, the default is 65535)

65535

SYNONYMS

The following are synonyms for VARCHAR:

  • NVARCHAR

SCHEMA

PARAMETERS

SKYSQL

PRIVILEGES

EXAMPLES

VARCHAR

For our example of VARCHAR we picked the maximum number of bytes before the field would get auto-promoted to one of the smallest appropriate TEXT type. The limit is one byte short of 64K of data, but keep in mind that each character may require more than one byte of representation, which may make the cross-over point smaller than 65535 characters depending on the character set used. In our example we use the latin1 character set due to its single-byte representation:

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

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 VARCHAR:

TRUNCATE varchar_example;

INSERT INTO varchar_example VALUES
   ('Overflow', RPAD('', 65536, 'x'));
ERROR 1406 (22001): [7177] Data truncation: Data too long for column "example"

ERROR HANDLING

FEATURE INTERACTION

RESPONSES

DIAGNOSIS

ISO 9075:2016

CHANGE HISTORY

Release Series

History

23.09

  • Present starting in MariaDB Xpand 23.09.1.

6.1

  • Present starting in MariaDB Xpand 6.1.0.

6.0

  • Present starting in MariaDB Xpand 6.0.3.

5.3

  • Present starting in MariaDB Xpand 5.3.13.

Release Series

History

6.0

  • Present starting in MariaDB Xpand 6.0.3.

5.3

  • Present starting in MariaDB Xpand 5.3.13.

Release Series

History

6.1

  • Present starting in MariaDB Xpand 6.1.0.

EXTERNAL REFERENCES