> ## 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_currency para MySQL

> A extensão vsql_currency adiciona ao MySQL um tipo de coluna currency que guarda qualquer um dos 164 códigos ISO 4217 em um único byte, sem distinguir maiúsculas de minúsculas na entrada.

Uma coluna de código de moeda normalmente é um `CHAR(3)` que aceita quaisquer
três letras, incluindo as que não são moedas. O `vsql_currency` adiciona um
tipo `currency` que guarda os 164 códigos ISO 4217 que o pg-currency suporta,
em um único byte, aceita-os em qualquer combinação de maiúsculas e minúsculas
e os exibe na forma canônica em maiúsculas.

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

## Instalar

O `vsql_currency` não vem incluído com o servidor, então compile-o primeiro a
partir do repositório e copie o `vsql_currency.veb` resultante para o
diretório indicado pela variável de sistema `veb_dir`. Em seguida, instale-o:

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

Confirme que ele está lá:

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

```
+----------------+
| EXTENSION_NAME |
+----------------+
| vsql_currency  |
+----------------+
```

As instruções de compilação estão no
[repositório](https://github.com/villagesql/vsql-currency).

## O que ela adiciona

### O tipo currency

```sql theme={null}
CREATE TABLE prices (
    sku    VARCHAR(8) PRIMARY KEY,
    amount DECIMAL(10,2),
    unit   currency
);
```

### Funções

| Função | Retorna | O que faz |
| - | - | - |
| `currency_count()` | int | Quantos códigos a extensão conhece |
| `is_currency(code)` | int | 1 quando a string é um código ISO 4217 válido, 0 quando não é |
| `supported_currencies(prefix)` | texto | A lista de códigos como um array JSON, restrita por um prefixo |

## Exemplo

Escreva os códigos em qualquer combinação de maiúsculas e minúsculas, e leia-os de volta na forma canônica e em ordem:

```sql theme={null}
INSERT INTO prices VALUES
    ('A-100', 19.99, 'usd'),
    ('A-101', 24.50, 'EUR'),
    ('A-102', 3100,  'jpy');

SELECT sku, amount, unit FROM prices ORDER BY unit;
```

```
+-------+---------+------+
| sku   | amount  | unit |
+-------+---------+------+
| A-101 |   24.50 | EUR  |
| A-102 | 3100.00 | JPY  |
| A-100 |   19.99 | USD  |
+-------+---------+------+
```

Verifique um código antes de confiar nele, e liste os que lhe interessam:

```sql theme={null}
SELECT currency_count() AS codes, is_currency('XYZ') AS xyz, is_currency('GBP') AS gbp;
```

```
+-------+------+------+
| codes | xyz  | gbp  |
+-------+------+------+
|   164 |    0 |    1 |
+-------+------+------+
```

```sql theme={null}
SELECT supported_currencies('C') AS starting_with_c;
```

```
+---------------------------------------------------------------------+
| starting_with_c                                                     |
+---------------------------------------------------------------------+
| ["CAD","CDF","CHF","CLP","CNY","COP","CRC","CUC","CUP","CVE","CZK"] |
+---------------------------------------------------------------------+
```

## Veja também

* [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-currency](https://github.com/villagesql/vsql-currency) — 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.