The STRING data type stores a string of Unicode characters.

Aliases

In CockroachDB, the following are aliases for STRING:

  • CHARACTER
  • CHAR
  • VARCHAR
  • TEXT

And the following are aliases for STRING(n):

  • CHARACTER(n)
  • CHARACTER VARYING(n)
  • CHAR(n)
  • CHAR VARYING(n)
  • VARCHAR(n)

Length

To limit the length of a string column, use STRING(n), where n is the maximum number of Unicode code points (normally thought of as “characters”) allowed.

When inserting a string:

  • If the value exceeds the column’s length limit, CockroachDB gives an error.
  • If the value is cast as a string with a length limit (e.g., CAST('hello world' AS STRING(5))), CockroachDB truncates to the limit.
  • If the value is under the column’s length limit, CockroachDB does not add padding. This applies to STRING(n) and all its aliases.

Syntax

A value of type STRING can be expressed using a variety of formats. See string literals for more details.

When printing out a STRING value in the SQL shell, the shell uses the simple SQL string literal format if the value doesn’t contain special character, or the escaped format otherwise.

Collations

STRING values accept collations, which lets you sort strings according to language- and country-specific rules.

You cannot current use collated strings in indexes or primary keys; doing so causes CockroachDB to crash. If you're interested in using collated strings in these contexts, you can follow this issue on GitHub to be notified when it's resolved.

Size

The size of a STRING value is variable, but it’s recommended to keep values under 64 kilobytes to ensure performance. Above that threshold, write amplification and other considerations may cause significant performance degradation.

Examples

> CREATE TABLE strings (a STRING PRIMARY KEY, b STRING(4), c TEXT);

> SHOW COLUMNS FROM strings;
+-------+-----------+-------+---------+
| Field |  Type     | Null  | Default |
+-------+-----------+-------+---------+
| a     | STRING    | false | NULL    |
| b     | STRING(4) | true  | NULL    |
| c     | STRING    | true  | NULL    |
+-------+-----------+-------+---------+
> INSERT INTO strings VALUES ('a1b2c3d4', 'e5f6', 'g7h8i9');

> SELECT * FROM strings;
+----------+------+--------+
|    a     |  b   |   c    |
+----------+------+--------+
| a1b2c3d4 | e5f6 | g7h8i9 |
+----------+------+--------+

Supported Casting & Conversion

STRING values can be cast to any of the following data types:

Type Details
INT Requires supported INT string format, e.g., '10'.
DECIMAL Requires supported DECIMAL string format, e.g., '1.1'.
FLOAT Requires supported FLOAT string format, e.g., '1.1'.
BOOL Requires supported BOOL string format, e.g., 'true'.
DATE Requires supported supported DATE string format, e.g., '2016-01-25'.
TIMESTAMP Requires supported supported TIMESTAMP string format, e.g., ''2016-01-25 10:10:10.555555''.
INTERVAL Requires supported INTERVAL string format, e.g., '1h2m3s4ms5us6ns'.
BYTES Requires supported BYTES string format, e.g., b'\141\061\142\062\143\063'.

See Also

Data Types



Yes No