> ## 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_boolean 拡張機能

> vsql_boolean 拡張機能は、1 バイトで格納され、true/false、yes/no、および on/off を受け付け、それ以外をすべて拒否する STRICTBOOL カラム型を MySQL に追加します。

MySQL にはブール型がありません。`BOOL` は `TINYINT(1)` の別名で、`1` と同じように `5` や `-1` も受け付け、そのまま返します。`vsql_boolean` は、1 バイトで格納され、2 つの値だけを保持する `STRICTBOOL` カラム型を追加します。

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

## インストール

インストールスクリプト、Docker イメージ、またはリリース tarball で VillageSQL をインストールした場合、`vsql_boolean.veb` はすでにサーバーの `lib/veb/` ディレクトリにあります。1 つのステートメントでサーバーにインストールします。

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

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

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

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

自分でビルドするには、[リポジトリ](https://github.com/villagesql/vsql-boolean)のビルド手順に従ってください。

## 追加される機能

### STRICTBOOL 型

`STRICTBOOL` カラムは、文字列 `'true'`/`'false'`、`'t'`/`'f'`、`'yes'`/`'no'`、`'on'`/`'off'`、および `'1'`/`'0'` を、大文字と小文字を問わず受け付けます。文字列として渡してください。裸の数値は拒否されます。どの形式で入れても `true` または `false` として読み戻され、1 バイトを占有します。

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

### 関数

| 関数 | 戻り値 | 説明 |
| - | - | - |
| `boolean_to_int(b)` | int | true なら 1、false なら 0 |
| `boolean_sum(b)` | int | 集約: グループ内で true の行数 |
| `boolean_avg(b)` | real | 集約: true の割合。NULL は無視 |

## 例

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

4 通りの書き方が入り、2 つの値が出てきました。数えてみます。

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

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

> [!NOTE]
>
> 受け付けられる書き方以外のものは、挿入時に拒否されます。`INSERT INTO flags VALUES (5, 'eps', 'maybe')` は `ERROR 1366 (HY000): Incorrect STRICTBOOL value: 'maybe' for column 'active'
>     at row 1` で失敗します。引用符のない `1` も同様に、`ERROR 3219 (HY000): Incorrect STRICTBOOL value: '1' for column 'active' at
>     row 1` で失敗します。

## 関連項目

* [MySQL での本物のブール型](https://villagesql.com/docs/en/guides/boolean-columns.md) — TINYINT(1) カラムの移行と、集約関数が NULL をどう扱うか
* [データ型の選択](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-boolean](https://github.com/villagesql/vsql-boolean) — ソース、ビルド手順、および既知の制限事項


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