Una cadena de longitud fija de N bytes (no caracteres ni puntos de código).
Para declarar una columna de tipo FixedString, use la siguiente sintaxis:
Donde N es un número natural.
El tipo FixedString es eficiente cuando los datos tienen una longitud de exactamente N bytes. En cualquier otro caso, es probable que reduzca la eficiencia.
Ejemplos de valores que pueden almacenarse de forma eficiente en columnas de tipo FixedString:
- La representación binaria de direcciones IP (
FixedString(16) para IPv6).
- Códigos de idioma (ru_RU, en_US … ).
- Códigos de divisa (USD, RUB … ).
- Representación binaria de hashes (
FixedString(16) para MD5, FixedString(32) para SHA256).
Para almacenar valores UUID, use el tipo de dato UUID.
Al insertar datos, ClickHouse:
- Rellena una cadena con bytes nulos si la cadena contiene menos de
N bytes.
- Lanza la excepción
Too large value for FixedString(N) si la cadena contiene más de N bytes.
Consideremos la siguiente tabla con una única columna FixedString(2):
Tenga en cuenta que la longitud del valor FixedString(N) es constante. La función length devuelve N incluso si el valor FixedString(N) está rellenado únicamente con bytes nulos, pero la función empty devuelve 1 en este caso.
Al seleccionar datos con la cláusula WHERE, el resultado varía según cómo se especifique la condición:
- Si se usa el operador de igualdad
= o ==, o la función equals, ClickHouse no tiene en cuenta el carácter \0; es decir, las consultas SELECT * FROM FixedStringTable WHERE name = 'a'; y SELECT * FROM FixedStringTable WHERE name = 'a\0'; devuelven el mismo resultado.
- Si se usa la cláusula
LIKE, ClickHouse sí tiene en cuenta el carácter \0, por lo que puede ser necesario especificar explícitamente el carácter \0 en la condición de filtro.
Última modificación el 19 de junio de 2026