> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 論理関数のドキュメント

# 論理関数

以下の関数は、任意の数値型の引数に対して論理演算を行います。
戻り値は [`UInt8`](/ja/reference/data-types/int-uint) 型の `0` または `1` で、場合によっては `NULL` になります。

引数としての 0 は `false`、0 以外の値は `true` と見なされます。

{/*AUTOGENERATED_START*/}

<div id="and">
  ## and
</div>

導入バージョン: v1.1.0

2 つ以上の値の論理積を計算します。

設定 [`short_circuit_function_evaluation`](/ja/reference/settings/session-settings#short_circuit_function_evaluation) では、短絡評価を使用するかどうかを制御します。
有効にすると、`val_i` は `(val_1 AND val_2 AND ... AND val_{i-1})` が `true` の場合にのみ評価されます。

たとえば、短絡評価を使用すると、クエリ `SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)` の実行時に、0 による除算の例外は発生しません。
引数としての 0 は `false` と見なされ、0 以外の値は `true` と見なされます。

**構文**

```sql theme={null}
and(val1, val2[, ...])
```

**引数**

* `val1, val2[, ...]` — 少なくとも2つの値からなるリスト。[`Nullable((U)Int*)`](/ja/reference/data-types/nullable) または [`Nullable(Float*)`](/ja/reference/data-types/nullable)

**戻り値**

以下を返します。

* 少なくとも1つの引数が `false` と評価される場合は `0`
* `false` と評価される引数がなく、少なくとも1つの引数が `NULL` の場合は `NULL`
* それ以外の場合は `1`
  [`Nullable(UInt8)`](/ja/reference/data-types/nullable)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT and(0, 1, -2);
```

```response title=Response theme={null}
0
```

**NULL を使用する場合**

```sql title=Query theme={null}
SELECT and(NULL, 1, 10, -2);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="not">
  ## not
</div>

導入バージョン: v1.1.0

値の論理否定を返します。
引数に 0 を指定した場合は `false`、0 以外の値は `true` と見なされます。

**構文**

```sql theme={null}
not(val)
```

**引数**

* `val` — 値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float)

**戻り値**

次を返します。

* `1`、`val` が `false` と評価される場合
* `0`、`val` が `true` と評価される場合
* `NULL`、`val` が `NULL` の場合。
  [`Nullable(UInt8)`](/ja/reference/data-types/nullable)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT NOT(1);
```

```response title=Response theme={null}
0
```

<div id="or">
  ## or
</div>

導入バージョン: v1.1.0

2 つ以上の値の論理和を計算します。

[`short_circuit_function_evaluation`](/ja/reference/settings/session-settings#short_circuit_function_evaluation) 設定は、短絡評価を使用するかどうかを制御します。
有効な場合、`val_i` は `((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))` が `true` の場合にのみ評価されます。

たとえば、短絡評価を使用すると、クエリ `SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)` の実行時に、ゼロ除算例外はスローされません。
引数の 0 は `false` と見なされ、0 以外の値は `true` と見なされます。

**構文**

```sql theme={null}
or(val1, val2[, ...])
```

**引数**

* `val1, val2[, ...]` — 少なくとも2つの値からなるリスト。[`Nullable((U)Int*)`](/ja/reference/data-types/nullable) または [`Nullable(Float*)`](/ja/reference/data-types/nullable)

**戻り値**

返される値:

* 少なくとも1つの引数が `true` と評価される場合は `1`
* すべての引数が `false` と評価される場合は `0`
* すべての引数が `false` と評価され、かつ少なくとも1つの引数が `NULL` の場合は `NULL`
  [`Nullable(UInt8)`](/ja/reference/data-types/nullable)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT or(1, 0, 0, 2, NULL);
```

```response title=Response theme={null}
1
```

**NULLを含む場合**

```sql title=Query theme={null}
SELECT or(0, NULL);
```

```response title=Response theme={null}
ᴺᵁᴸᴸ
```

<div id="xor">
  ## xor
</div>

導入バージョン: v1.1.0

2 つ以上の値の論理排他的論理和を計算します。
入力値が 3 つ以上ある場合、この関数はまず最初の 2 つの値に xor を適用し、その結果に 3 つ目の値を xor し、以降も同様に続けます。
引数としての 0 は `false` と見なされ、0 以外の値は `true` と見なされます。

**構文**

```sql theme={null}
xor(val1, val2[, ...])
```

**引数**

* `val1, val2[, ...]` — 少なくとも 2 つの値のリスト。[`Nullable((U)Int*)`](/ja/reference/data-types/nullable) または [`Nullable(Float*)`](/ja/reference/data-types/nullable)

**戻り値**

返される値:

* `1`、2 つの値の場合: 一方の値が `false` と評価され、もう一方がそうでない場合
* `0`、2 つの値の場合: 両方の値が `false` と評価されるか、両方とも `true` の場合
* 少なくとも 1 つの入力が `NULL` の場合は `NULL`。
  [`Nullable(UInt8)`](/ja/reference/data-types/nullable)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT xor(0, 1, 1);
```

```response title=Response theme={null}
0
```
