> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação do tipo de dado FixedString no ClickHouse

# FixedString(N)

Uma string de tamanho fixo de `N` bytes (nem caracteres nem pontos de código).

Para declarar uma coluna do tipo `FixedString`, use a seguinte sintaxe:

```sql theme={null}
<column_name> FixedString(N)
```

Onde `N` é um número natural.

O tipo `FixedString` é eficiente quando os dados têm comprimento exato de `N` bytes. Em todos os outros casos, ele provavelmente reduz a eficiência.

Exemplos de valores que podem ser armazenados com eficiência em colunas do tipo `FixedString`:

* A representação binária de endereços IP (`FixedString(16)` para IPv6).
* Códigos de idioma (ru\_RU, en\_US ... ).
* Códigos de moeda (USD, RUB ... ).
* A representação binária de hashes (`FixedString(16)` para MD5, `FixedString(32)` para SHA256).

Para armazenar valores UUID, use o tipo de dados [UUID](/pt-BR/reference/data-types/uuid).

Ao inserir dados, o ClickHouse:

* Completa uma string com bytes nulos se ela contiver menos de `N` bytes.
* Lança a exceção `Too large value for FixedString(N)` se a string contiver mais de `N` bytes.

Considere a tabela a seguir com uma única coluna `FixedString(2)`:

```sql theme={null}

INSERT INTO FixedStringTable VALUES ('a'), ('ab'), ('');
```

```sql theme={null}
SELECT
    name,
    toTypeName(name),
    length(name),
    empty(name)
FROM FixedStringTable;
```

```text theme={null}
┌─name─┬─toTypeName(name)─┬─length(name)─┬─empty(name)─┐
│ a    │ FixedString(2)   │            2 │           0 │
│ ab   │ FixedString(2)   │            2 │           0 │
│      │ FixedString(2)   │            2 │           1 │
└──────┴──────────────────┴──────────────┴─────────────┘
```

Observe que o comprimento do valor `FixedString(N)` é constante. A função [length](/pt-BR/reference/functions/regular-functions/array-functions#length) retorna `N` mesmo que o valor `FixedString(N)` esteja preenchido apenas com bytes nulos, mas a função [empty](/pt-BR/reference/functions/regular-functions/array-functions#empty) retorna `1` nesse caso.

A seleção de dados com a cláusula `WHERE` retorna resultados diferentes, dependendo de como a condição é especificada:

* Se forem usados o operador de igualdade `=` ou `==` ou a função `equals`, o ClickHouse *não* leva o caractere `\0` em consideração, ou seja, as consultas `SELECT * FROM FixedStringTable WHERE name = 'a';` e `SELECT * FROM FixedStringTable WHERE name = 'a\0';` retornam o mesmo resultado.
* Se a cláusula `LIKE` for usada, o ClickHouse *leva* o caractere `\0` em consideração, portanto pode ser necessário especificar explicitamente o caractere `\0` na condição de filtro.

```sql theme={null}
SELECT name
FROM FixedStringTable
WHERE name = 'a'
FORMAT JSONStringsEachRow

{"name":"a\u0000"}

SELECT name
FROM FixedStringTable
WHERE name = 'a\0'
FORMAT JSONStringsEachRow

{"name":"a\u0000"}

SELECT name
FROM FixedStringTable
WHERE name = 'a'
FORMAT JSONStringsEachRow

Query id: c32cec28-bb9e-4650-86ce-d74a1694d79e

{"name":"a\u0000"}

SELECT name
FROM FixedStringTable
WHERE name LIKE 'a'
FORMAT JSONStringsEachRow

0 rows in set.

SELECT name
FROM FixedStringTable
WHERE name LIKE 'a\0'
FORMAT JSONStringsEachRow

{"name":"a\u0000"}
```
