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

> 逻辑函数文档

# 逻辑函数

以下函数对任意数值类型的参数执行逻辑运算。
它们返回 `0` 或 `1`，结果类型为 [`UInt8`](/zh/reference/data-types/int-uint)；在某些情况下也会返回 `NULL`。

参数为零时视为 `false`，非零值视为 `true`。

{/*AUTOGENERATED_START*/}

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

引入版本：v1.1.0

计算两个或多个值的逻辑与。

设置 [`short_circuit_function_evaluation`](/zh/reference/settings/session-settings#short_circuit_function_evaluation) 用于控制是否启用短路求值。
如果启用，则仅当 `(val_1 AND val_2 AND ... AND val_{i-1})` 为 `true` 时，才会计算 `val_i`。

例如，启用短路求值后，执行查询 `SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)` 时不会抛出除零异常。
作为参数时，零被视为 `false`，非零值被视为 `true`。

**语法**

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

**参数**

* `val1, val2[, ...]` — 至少包含两个值的列表。[`Nullable((U)Int*)`](/zh/reference/data-types/nullable) 或 [`Nullable(Float*)`](/zh/reference/data-types/nullable)

**返回值**

返回：

* `0`，如果至少有一个参数的求值结果为 `false`
* `NULL`，如果没有任何参数的求值结果为 `false`，且至少有一个参数为 `NULL`
* `1`，否则
  [`Nullable(UInt8)`](/zh/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

计算一个值的逻辑否定。
当作为参数时，零被视为 `false`，非零值被视为 `true`。

**语法**

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

**参数**

* `val` — 值。[`(U)Int*`](/zh/reference/data-types/int-uint) 或 [`Float*`](/zh/reference/data-types/float)

**返回值**

返回：

* 如果 `val` 的计算结果为 `false`，则返回 `1`
* 如果 `val` 的计算结果为 `true`，则返回 `0`
* 如果 `val` 为 `NULL`，则返回 `NULL`。
  [`Nullable(UInt8)`](/zh/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

计算两个或多个值的逻辑“或”。

设置 [`short_circuit_function_evaluation`](/zh/reference/settings/session-settings#short_circuit_function_evaluation) 用于控制是否使用短路求值。
如果启用，只有当 `((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))` 为 `true` 时，才会计算 `val_i`。

例如，使用短路求值时，执行查询 `SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)` 不会抛出除零异常。
参数值为零时视为 `false`，非零值视为 `true`。

**语法**

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

**参数**

* `val1, val2[, ...]` — 至少包含两个值的列表。[`Nullable((U)Int*)`](/zh/reference/data-types/nullable) 或 [`Nullable(Float*)`](/zh/reference/data-types/nullable)

**返回值**

返回：

* `1`，如果至少有一个参数求值为 `true`
* `0`，如果所有参数求值都为 `false`
* `NULL`，如果所有参数求值都为 `false`，且至少有一个参数为 `NULL`
  [`Nullable(UInt8)`](/zh/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

计算两个或多个值的逻辑异或。
对于两个以上的输入值，该函数会先对前两个值执行 xor，然后将结果再与第三个值执行 xor，依此类推。
参数为零时视为 `false`，非零值视为 `true`。

**语法**

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

**参数**

* `val1, val2[, ...]` — 至少包含两个值的列表。[`Nullable((U)Int*)`](/zh/reference/data-types/nullable) 或 [`Nullable(Float*)`](/zh/reference/data-types/nullable)

**返回值**

返回：

* `1`，对于两个值：如果其中一个值的计算结果为 `false`，而另一个不是
* `0`，对于两个值：如果两个值的计算结果都为 `false` 或都为 `true`
* `NULL`，如果至少有一个输入为 `NULL`。
  [`Nullable(UInt8)`](/zh/reference/data-types/nullable)

**示例**

**基本用法**

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

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