> ## 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)`의 별칭이며, `5`와 `-1`을
`1`과 똑같이 받아들이고 그대로 돌려줍니다. `vsql_boolean`은 1바이트를 저장하고
두 값만 담는 `STRICTBOOL` 열 유형을 추가합니다.

| | |
| - | - |
| **관리자** | VillageSQL |
| **소스 및 전체 문서** | [villagesql/vsql-boolean](https://github.com/villagesql/vsql-boolean) |
| **라이선스** | GPL-2.0 |

## 설치

설치 스크립트, Docker 이미지 또는 릴리스 tarball로 VillageSQL을 설치했다면
`vsql_boolean.veb`는 이미 서버의 `lib/veb/` 디렉터리에 있습니다. 문 하나로
서버에 설치하세요:

```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 | 집계: NULL을 제외한 true의 비율 |

## 예제

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

네 가지 표기가 들어가서 두 가지 값으로 나왔습니다. 개수를 세어 봅니다:

```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/ko/extensions/install.md) — `INSTALL EXTENSION`의 동작 방식과 서버가 번들을 찾는 위치
* [사용 가능한 확장 기능](https://villagesql.com/docs/ko/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.