N octets (ni caractères ni points de code).
Pour déclarer une colonne de type FixedString, utilisez la syntaxe suivante :
N représente un nombre naturel.
Le type FixedString est efficace lorsque les données ont une longueur exactement égale à N octets. Dans tous les autres cas, il risque de réduire l’efficacité.
Exemples de valeurs pouvant être stockées efficacement dans des colonnes de type FixedString :
- La représentation binaire des adresses IP (
FixedString(16)pour IPv6). - Les codes de langue (ru_RU, en_US, …).
- Les codes de devise (USD, RUB, …).
- La représentation binaire des hachages (
FixedString(16)pour MD5,FixedString(32)pour SHA256).
- Complète la chaîne avec des octets nuls si elle contient moins de
Noctets. - Lève l’exception
Too large value for FixedString(N)si la chaîne contient plus deNoctets.
FixedString(2) :
FixedString(N) est constante. La fonction length renvoie N même si la valeur FixedString(N) n’est remplie que d’octets nuls, mais la fonction empty renvoie 1 dans ce cas.
La sélection de données avec la clause WHERE renvoie des résultats différents selon la manière dont la condition est spécifiée :
- Si l’opérateur d’égalité
=ou==, ou la fonctionequals, est utilisé, ClickHouse ne tient pas compte du caractère\0, c.-à-d. que les requêtesSELECT * FROM FixedStringTable WHERE name = 'a';etSELECT * FROM FixedStringTable WHERE name = 'a\0';renvoient le même résultat. - Si la clause
LIKEest utilisée, ClickHouse tient bien compte du caractère\0, il peut donc être nécessaire de spécifier explicitement le caractère\0dans la condition de filtre.