> ## 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.

# MySQL 用 vsql_currency 拡張機能

> vsql_currency 拡張機能は、164 種類の ISO 4217 コードのいずれかを 1 バイトで保持し、入力時に大文字と小文字を区別しない currency カラム型を MySQL に追加します。

通貨コードのカラムは通常 `CHAR(3)` で、通貨ではないものを含め、任意の 3 文字を受け付けます。`vsql_currency` は、pg-currency がサポートする 164 種類の ISO 4217 コードを 1 バイトで保持し、大文字と小文字を問わず受け付け、正規の大文字形式で表示する `currency` 型を追加します。

| | |
| - | - |
| **メンテナー** | VillageSQL |
| **ソースと完全なドキュメント** | [villagesql/vsql-currency](https://github.com/villagesql/vsql-currency) |
| **ライセンス** | GPL-2.0 |
| **実装言語** | Rust |

## インストール

`vsql_currency` はサーバーに同梱されていないため、まずリポジトリからビルドし、生成された `vsql_currency.veb` をシステム変数 `veb_dir` が示すディレクトリにコピーします。その後、インストールします。

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

インストールされたことを確認します。

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

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

ビルド手順は[リポジトリ](https://github.com/villagesql/vsql-currency)にあります。

## 追加される機能

### currency 型

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

### 関数

| 関数 | 戻り値 | 説明 |
| - | - | - |
| `currency_count()` | int | 拡張機能が知っているコードの数 |
| `is_currency(code)` | int | 文字列が有効な ISO 4217 コードなら 1、そうでなければ 0 |
| `supported_currencies(prefix)` | text | コードの一覧を JSON 配列で返す。プレフィックスで絞り込む |

## 例

大文字と小文字を問わずコードを書き込み、正規の形式で順序どおりに読み戻します。

```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  |
+-------+---------+------+
```

コードを信頼する前に確認し、関心のあるコードを一覧にします。

```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"] |
+---------------------------------------------------------------------+
```

## 関連項目

* [データ型の選択](https://villagesql.com/docs/en/guides/choosing-data-types.md) — より狭い型を選ぶ価値があるのはどのような場合か
* [拡張機能のインストール](https://villagesql.com/docs/ja/extensions/install.md) — `INSTALL EXTENSION` の仕組みと、サーバーがバンドルを探す場所
* [利用可能な拡張機能](https://villagesql.com/docs/ja/extensions/catalog) — 完全なカタログ
* [villagesql/vsql-currency](https://github.com/villagesql/vsql-currency) — ソース、ビルド手順、および既知の制限事項


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