FixedString(N)
A fixed-length string of N
bytes (neither characters nor code points).
To declare a column of FixedString
type, use the following syntax:
Where N
is a natural number.
The FixedString
type is efficient when data has the length of precisely N
bytes. In all other cases, it is likely to reduce efficiency.
Examples of the values that can be efficiently stored in FixedString
-typed columns:
- The binary representation of IP addresses (
FixedString(16)
for IPv6). - Language codes (ru_RU, en_US ... ).
- Currency codes (USD, RUB ... ).
- Binary representation of hashes (
FixedString(16)
for MD5,FixedString(32)
for SHA256).
To store UUID values, use the UUID data type.
When inserting the data, ClickHouse:
- Complements a string with null bytes if the string contains fewer than
N
bytes. - Throws the
Too large value for FixedString(N)
exception if the string contains more thanN
bytes.
Let's consider the following table with the single FixedString(2)
column:
Note that the length of the FixedString(N)
value is constant. The length function returns N
even if the FixedString(N)
value is filled only with null bytes, but the empty function returns 1
in this case.
Selecting data with WHERE
clause return various result depending on how the condition is specified:
- If equality operator
=
or==
orequals
function used, ClickHouse doesn't take\0
char into consideration, i.e. queriesSELECT * FROM FixedStringTable WHERE name = 'a';
andSELECT * FROM FixedStringTable WHERE name = 'a\0';
return the same result. - If
LIKE
clause is used, ClickHouse does take\0
char into consideration, so one may need to explicitly specify\0
char in the filter condition.