> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Extensão vsql_boolean para MySQL

> A extensão vsql_boolean adiciona ao MySQL um tipo de coluna STRICTBOOL que armazena um byte, aceita true/false, yes/no e on/off, e rejeita qualquer outra coisa.

O MySQL não tem booleano. `BOOL` é um alias para `TINYINT(1)`, que aceita `5`
e `-1` tão bem quanto `1`, e os devolve sem alteração. O `vsql_boolean`
adiciona um tipo de coluna `STRICTBOOL` que armazena um byte e guarda dois
valores.

| | |
| - | - |
| **Mantenedor** | VillageSQL |
| **Código-fonte e documentação completa** | [villagesql/vsql-boolean](https://github.com/villagesql/vsql-boolean) |
| **Licença** | GPL-2.0 |

## Instalar

O `vsql_boolean.veb` já está no diretório `lib/veb/` do servidor se você
instalou o VillageSQL com o script de instalação, a imagem Docker ou um tarball
de release. Instale-o no servidor com uma única instrução:

```sql theme={null}
INSTALL EXTENSION vsql_boolean;
```

Confirme que ele está lá:

```sql theme={null}
SELECT EXTENSION_NAME
FROM INFORMATION_SCHEMA.EXTENSIONS
WHERE EXTENSION_NAME = 'vsql_boolean';
```

```
+----------------+
| EXTENSION_NAME |
+----------------+
| vsql_boolean   |
+----------------+
```

Para compilá-lo você mesmo, siga as instruções de compilação no
[repositório](https://github.com/villagesql/vsql-boolean).

## O que ela adiciona

### O tipo STRICTBOOL

Uma coluna `STRICTBOOL` aceita as strings `'true'`/`'false'`, `'t'`/`'f'`,
`'yes'`/`'no'`, `'on'`/`'off'` e `'1'`/`'0'`, em qualquer combinação de
maiúsculas e minúsculas. Passe-as como strings: um número sem aspas é recusado.
Ela é lida como `true` ou `false`, qualquer que seja a forma que entrou, e
ocupa um byte.

```sql theme={null}
CREATE TABLE flags (
    id     INT PRIMARY KEY,
    name   VARCHAR(16),
    active STRICTBOOL
);
```

### Funções

| Função | Retorna | O que faz |
| - | - | - |
| `boolean_to_int(b)` | int | 1 para true, 0 para false |
| `boolean_sum(b)` | int | Agregado: quantas linhas do grupo são true |
| `boolean_avg(b)` | real | Agregado: a fração que é true, ignorando NULLs |

## Exemplo

```sql theme={null}
INSERT INTO flags VALUES
    (1, 'alpha', 'true'),
    (2, 'beta',  'no'),
    (3, 'gamma', 'on'),
    (4, 'delta', '0');

SELECT name, active FROM flags;
```

```
+-------+--------+
| name  | active |
+-------+--------+
| alpha | true   |
| beta  | false  |
| gamma | true   |
| delta | false  |
+-------+--------+
```

Quatro grafias entraram, e dois valores saíram. Conte-os:

```sql theme={null}
SELECT boolean_sum(active) AS enabled, ROUND(boolean_avg(active), 2) AS fraction
FROM flags;
```

```
+---------+----------+
| enabled | fraction |
+---------+----------+
|       2 |      0.5 |
+---------+----------+
```

> [!NOTE]
>
> Qualquer coisa fora das grafias aceitas é recusada no momento da inserção:
> `INSERT INTO flags VALUES (5, 'eps', 'maybe')` falha com
> `ERROR 1366 (HY000): Incorrect STRICTBOOL value: 'maybe' for column 'active'
>     at row 1`. O mesmo acontece com um `1` sem aspas, com
> `ERROR 3219 (HY000): Incorrect STRICTBOOL value: '1' for column 'active' at
>     row 1`.

## Veja também

* [Booleanos reais no MySQL](https://villagesql.com/docs/en/guides/boolean-columns.md) — migrar uma coluna TINYINT(1) e o que os agregados fazem com NULL
* [Escolhendo tipos de dados](https://villagesql.com/docs/en/guides/choosing-data-types.md) — quando um tipo mais estreito vale a pena
* [Instalar extensões](https://villagesql.com/docs/pt-BR/extensions/install.md) — como o `INSTALL EXTENSION` funciona e onde o servidor procura um bundle
* [Extensões disponíveis](https://villagesql.com/docs/pt-BR/extensions/catalog) — o catálogo completo
* [villagesql/vsql-boolean](https://github.com/villagesql/vsql-boolean) — código-fonte, instruções de compilação e as limitações conhecidas


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.