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

> 「その他の関数」カテゴリのドキュメント

# その他の関数

export const DeprecatedBadge = () => {
  return <div className="deprecatedBadge">
            <div className="deprecatedIcon">
            <svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M13 0H1C0.734784 0 0.48043 0.105357 0.292893 0.292893C0.105357 0.48043 0 0.734784 0 1V2.5C0 2.76522 0.105357 3.01957 0.292893 3.20711C0.48043 3.39464 0.734784 3.5 1 3.5V9C1 9.26522 1.10536 9.51957 1.29289 9.70711C1.48043 9.89464 1.73478 10 2 10H12C12.2652 10 12.5196 9.89464 12.7071 9.70711C12.8946 9.51957 13 9.26522 13 9V3.5C13.2652 3.5 13.5196 3.39464 13.7071 3.20711C13.8946 3.01957 14 2.76522 14 2.5V1C14 0.734784 13.8946 0.48043 13.7071 0.292893C13.5196 0.105357 13.2652 0 13 0ZM12 9H2V3.5H12V9ZM13 2.5H1V1H13V2.5ZM5 5.5C5 5.36739 5.05268 5.24021 5.14645 5.14645C5.24021 5.05268 5.36739 5 5.5 5H8.5C8.63261 5 8.75979 5.05268 8.85355 5.14645C8.94732 5.24021 9 5.36739 9 5.5C9 5.63261 8.94732 5.75979 8.85355 5.85355C8.75979 5.94732 8.63261 6 8.5 6H5.5C5.36739 6 5.24021 5.94732 5.14645 5.85355C5.05268 5.75979 5 5.63261 5 5.5Z" fill="currentColor" />
            </svg>
        </div>
            非推奨機能
        </div>;
};

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            ClickHouse Cloud では利用できません
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            実験的な機能です。 <u><a href="/docs/beta-and-experimental-features#experimental-features">詳細を見る。</a></u>
        </div>;
};

<Note>
  以下の関数ドキュメントは、`system.functions` システムテーブルから生成されています。
</Note>

{/*AUTOGENERATED_START*/}

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

導入バージョン: v20.1.0

ClickHouseサーバーの完全修飾ドメイン名を返します。

**構文**

```sql theme={null}
FQDN()
```

**別名**: `fullHostName`

**引数**

* なし。

**戻り値**

ClickHouseサーバーの完全修飾ドメイン名を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT fqdn()
```

```response title=Response theme={null}
┌─FQDN()──────────────────────────┐
│ clickhouse.us-east-2.internal │
└─────────────────────────────────┘
```

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

導入バージョン: v1.1.0

[`UInt64`](/ja/reference/data-types/int-uint) 型の数値を、ビッグエンディアン形式の MAC アドレスとして解釈します。
対応する MAC アドレスを、`AA:BB:CC:DD:EE:FF` フォーマット (コロン区切りの16進数表記) の文字列として返します。

**構文**

```sql theme={null}
MACNumToString(num)
```

**引数**

* `num` — UInt64 型の数値。[`UInt64`](/ja/reference/data-types/int-uint)

**戻り値**

AA:BB:CC:DD:EE:FF 形式の MAC アドレスを返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT MACNumToString(149809441867716) AS mac_address;
```

```response title=Response theme={null}
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘
```

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

導入バージョン: v1.1.0

MACNumToString の逆関数です。MAC アドレスの形式が不正な場合は、0 を返します。

**構文**

```sql theme={null}
MACStringToNum(s)
```

**引数**

* `s` — MACアドレスの文字列。[`String`](/ja/reference/data-types/string)

**戻り値**

`UInt64` 型の数値を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;
```

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

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

導入バージョン: v1.1.0

AA:BB:CC:DD:EE:FF 形式の MAC アドレス (コロン区切りの16進数表記) を受け取り、先頭 3 オクテットを UInt64 値として返します。MAC アドレスの形式が無効な場合は 0 を返します。

**構文**

```sql theme={null}
MACStringToOUI(s)
```

**引数**

* `s` — MAC アドレスの文字列。[`String`](/ja/reference/data-types/string)

**戻り値**

先頭の 3 オクテットを UInt64 の数値として返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;
```

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

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

導入バージョン: v25.11.0

セッションユーザーが `EXECUTE AS` コマンドで切り替えられている場合、この関数は、認証とセッションの作成に使われた元のユーザー名を返します。
別名: authUser()

**構文**

```sql theme={null}
authenticatedUser()
```

**別名**: `authUser`

**引数**

* なし。

**戻り値**

認証されたユーザー名。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
EXECUTE as u1;
            SELECT currentUser(), authenticatedUser();
```

```response title=Response theme={null}
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘
```

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

導入バージョン: v1.1.0

棒グラフを生成します。
x = max の場合は `width` 文字幅となる、(x - min) に比例した幅の帯を描画します。
帯は 1 文字の 8 分の 1 の精度で描画されます。

**構文**

```sql theme={null}
bar(x, min, max[, width])
```

**引数**

* `x` — 表示するサイズ。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)
* `min` — 最小値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)
* `max` — 最大値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)
* `width` — オプション。バーの幅 (文字数) です。既定値は `80` です。[`const (U)Int*`](/ja/reference/data-types/int-uint) または [`const Float*`](/ja/reference/data-types/float) または [`const Decimal`](/ja/reference/data-types/decimal)

**戻り値**

Unicodeアートのバーを表す文字列を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT
toHour(EventTime) AS h,
count() AS c,
bar(c, 0, 600000, 20) AS bar
FROM test.hits
GROUP BY h
ORDER BY h ASC
```

```response title=Response theme={null}
┌──h─┬──────c─┬─bar────────────────┐
│  0 │ 292907 │ █████████▋         │
│  1 │ 180563 │ ██████             │
│  2 │ 114861 │ ███▋               │
│  3 │  85069 │ ██▋                │
│  4 │  68543 │ ██▎                │
│  5 │  78116 │ ██▌                │
│  6 │ 113474 │ ███▋               │
│  7 │ 170678 │ █████▋             │
│  8 │ 278380 │ █████████▎         │
│  9 │ 391053 │ █████████████      │
│ 10 │ 457681 │ ███████████████▎   │
│ 11 │ 493667 │ ████████████████▍  │
│ 12 │ 509641 │ ████████████████▊  │
│ 13 │ 522947 │ █████████████████▍ │
│ 14 │ 539954 │ █████████████████▊ │
│ 15 │ 528460 │ █████████████████▌ │
│ 16 │ 539201 │ █████████████████▊ │
│ 17 │ 523539 │ █████████████████▍ │
│ 18 │ 506467 │ ████████████████▊  │
│ 19 │ 520915 │ █████████████████▎ │
│ 20 │ 521665 │ █████████████████▍ │
│ 21 │ 542078 │ ██████████████████ │
│ 22 │ 493642 │ ████████████████▍  │
│ 23 │ 400397 │ █████████████▎     │
└────┴────────┴────────────────────┘
```

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

導入バージョン: v1.1.0

その行を含む[ブロック](/ja/resources/develop-contribute/introduction/architecture#block)の単調増加するシーケンス番号を返します。
返される ブロック 番号はベストエフォートで更新されるため、完全に正確でない場合があります。

**構文**

```sql theme={null}
blockNumber()
```

**引数**

* なし。

**戻り値**

その行が含まれるデータブロックのシーケンス番号。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT blockNumber()
FROM
(
    SELECT *
    FROM system.numbers
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─blockNumber()─┐
│             7 │
│             7 │
└───────────────┘
┌─blockNumber()─┐
│             8 │
│             8 │
└───────────────┘
┌─blockNumber()─┐
│             9 │
│             9 │
└───────────────┘
┌─blockNumber()─┐
│            10 │
│            10 │
└───────────────┘
┌─blockNumber()─┐
│            11 │
│            11 │
└───────────────┘
```

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

導入バージョン: v20.3.0

ディスク上にある値ブロックの非圧縮サイズを、バイト単位で返します。

**構文**

```sql theme={null}
blockSerializedSize(x1[, x2[, ...]])
```

**引数**

* `x1[, x2, ...]` — ブロックの非圧縮サイズを取得する対象となる、任意の数の値。[`Any`](/ja/reference/data-types/index)

**戻り値**

圧縮されていない値のブロックについて、ディスクに書き込まれるバイト数を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT blockSerializedSize(maxState(1)) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

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

導入バージョン: v1.1.0

ClickHouse では、クエリは [ブロック](/ja/resources/develop-contribute/introduction/architecture#block) (chunk) 単位で処理されます。
この関数は、呼び出し対象のブロックのサイズ (行数) を返します。

**構文**

```sql theme={null}
blockSize()
```

**引数**

* なし。

**戻り値**

現在のブロック内の行数を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT blockSize()
FROM system.numbers LIMIT 5
```

```response title=Response theme={null}
┌─blockSize()─┐
│           5 │
│           5 │
│           5 │
│           5 │
│           5 │
└─────────────┘
```

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

導入バージョン: v20.5.0

実行中の ClickHouseサーバー バイナリについて、コンパイラが生成したビルド ID を返します。
分散テーブルのコンテキストで実行した場合、この関数は各分片に対応する値を持つ通常のカラムを返します。
それ以外の場合は、定数値を返します。

**構文**

```sql theme={null}
buildId()
```

**引数**

* なし

**戻り値**

ビルドIDを返します。 [`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT buildId()
```

```response title=Response theme={null}
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘
```

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

導入バージョン: v21.1.0

メモリ内における引数の非圧縮バイトサイズの推定値を返します。
`String` 型の引数の場合、この関数は文字列の長さ + 8 (長さ) を返します。
この関数に複数の引数がある場合、それらのバイトサイズの合計を返します。

**構文**

```sql theme={null}
byteSize(arg1[, arg2, ...])
```

**引数**

* `arg1[, arg2, ...]` — 非圧縮時のバイトサイズを推定する対象となる、任意のデータ型の値。[`Any`](/ja/reference/data-types/index)

**戻り値**

メモリ内における引数のバイトサイズの推定値を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT byteSize('string')
```

```response title=Response theme={null}
┌─byteSize('string')─┐
│                 15 │
└────────────────────┘
```

**複数の引数**

```sql title=Query theme={null}
SELECT byteSize(NULL, 1, 0.3, '')
```

```response title=Response theme={null}
┌─byteSize(NULL, 1, 0.3, '')─┐
│                         19 │
└────────────────────────────┘
```

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

導入バージョン: v22.9.0

外部のCatBoostモデルを評価します。[CatBoost](https://catboost.ai) は、機械学習向けに Yandex が開発したオープンソースの勾配ブースティングライブラリです。
CatBoost モデルへのパスと、モデル引数 (特徴量) を受け取ります。

**前提条件**

1. catboost 評価ライブラリをビルドする

CatBoost モデルを評価する前に、`libcatboostmodel.<so|dylib>` ライブラリを利用できる状態にしておく必要があります。コンパイル方法については、[CatBoost documentation](https://catboost.ai/docs/concepts/c-plus-plus-api_dynamic-c-pluplus-wrapper.html) を参照してください。

次に、`libcatboostmodel.<so|dylib>` へのパスを ClickHouse の設定で指定します:

```xml theme={null}
<clickhouse>
...
    <catboost_lib_path>/path/to/libcatboostmodel.so</catboost_lib_path>
...
</clickhouse>
```

セキュリティと分離のため、モデルの評価はサーバープロセス内では実行されず、clickhouse-library-bridgeプロセス内で実行されます。
`catboostEvaluate()` を最初に実行すると、まだ起動していない場合は、サーバーが library bridge プロセスを起動します。両プロセスは
HTTPインターフェイスを使用して通信します。デフォルトではポート `9012` が使用されます。別のポートは次のように指定できます。これは、ポート
`9012` がすでに別のサービスに割り当てられている場合に便利です。

```xml theme={null}
<library_bridge>
    <port>9019</port>
</library_bridge>
```

2. libcatboost を使用して CatBoost モデルを学習します

トレーニングデータセットから CatBoost モデルを学習する方法については、[モデルの学習と適用](https://catboost.ai/docs/features/training.html#training) を参照してください。

**構文**

```sql theme={null}
catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])
```

**引数**

* `path_to_model` — catboost モデルへのパス。[`const String`](/ja/reference/data-types/string)
* `feature` — 1 つ以上のモデルの特徴量/引数。[`Float*`](/ja/reference/data-types/float)

**戻り値**

モデルの評価結果。[`Float64`](/ja/reference/data-types/float)

**例**

**catboostEvaluate**

```sql title=Query theme={null}
SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
```

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

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

導入バージョン: v26.2.0

色を OKLab 知覚色空間から sRGB 色空間に変換します。

入力色は OKLab 色空間で指定します。入力値が
一般的な OKLab の範囲外にある場合、結果は実装依存になります。

OKLab は 3 つの部分を使用します。

* L: 知覚的な明度 (通常は \[0..1] の範囲)
  * a: 緑-赤の対立軸
  * b: 青-黄の対立軸

a および b の部分は理論上は無制限ですが、実際には -0.4 から 0.4 の範囲に収まります。
OKLab は、コンピュートコストを低く抑えつつ、
知覚的に一様になるよう設計されています。

この変換は colorSRGBToOKLAB の逆変換となることを意図しており、
次の段階で構成されます。

1. OKLab から Linear sRGB への変換。
   2\) Linear sRGB からガンマエンコードされた sRGB への変換。

オプションの gamma 引数は、Linear
sRGB からガンマエンコードされた RGB 値への変換時に使用する指数を指定します。指定しない場合は、colorSRGBToOKLAB との一貫性を保つため、
既定の gamma 値が使用されます。

OKLab 色空間とその sRGB との関係の詳細については、[https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color\&#95;value/oklab](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color\&#95;value/oklab)
を参照してください。

**構文**

```sql theme={null}
colorOKLABToSRGB(tuple [, gamma])
```

**引数**

* `tuple` — 3 つの数値 `L`、`a`、`b` からなるタプルです。`L` の範囲は `[0...1]` です。[`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)
* `gamma` — 省略可能です。各チャネル `x` に `(x ^ (1 / gamma)) * 255` を適用して、Linear sRGB を sRGB に戻す際に使用する指数です。既定値は `2.2` です。[`Float64`](/ja/reference/data-types/float)

**戻り値**

sRGB の色値を表すタプル `(R, G, B)` を返します。[`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)

**例**

**OKLAB を sRGB (Float) に変換**

```sql title=Query theme={null}
SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;
```

```response title=Response theme={null}
┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘
```

**OKLABをsRGB (UInt8) に変換**

```sql title=Query theme={null}
WITH colorOKLABToSRGB((0.7, 0.1, 0.54)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (255,0,0)    │
└──────────────┘
```

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

導入バージョン: v25.7.0

色を **OKLCH** 知覚色空間から、一般的な **sRGB** 色空間に変換します。

`L` が範囲 `[0...1]` 外にある場合、`C` が負の場合、または `H` が範囲 `[0...360]` 外にある場合、結果は実装依存です。

<Note>
  **OKLCH** は、OKLab 色空間の円筒座標表現です。
  3 つの座標は、`L` (範囲 `[0...1]` の明度) 、`C` (彩度 `>= 0`) 、`H` (`[0...360]` の範囲の度数による色相) です。
  OKLab/OKLCH は、知覚的に均一でありながら、計算コストを低く抑えられるよう設計されています。
</Note>

この変換は [`colorSRGBToOKLCH`](#colorSRGBToOKLCH) の逆変換です。

1. OKLCH から OKLab へ。
   2\) OKLab から Linear sRGB へ
   3\) Linear sRGB から sRGB へ

2 番目の引数 gamma は最後の段階で使用されます。

OKLCH 空間における色の例と、それらが sRGB の色にどのように対応するかについては、[https://oklch.com/](https://oklch.com/) を参照してください。

**構文**

```sql theme={null}
colorOKLCHToSRGB(tuple [, gamma])
```

**引数**

* `tuple` — 3 つの数値 `L`、`C`、`H` から成るタプル。`L` は範囲 `[0...1]`、`C >= 0`、`H` は範囲 `[0...360]` です。[`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)
* `gamma` — 任意。各チャネル `x` に `(x ^ (1 / gamma)) * 255` を適用して、線形 sRGB を sRGB に変換する際に使用する指数です。デフォルトは `2.2` です。[`Float64`](/ja/reference/data-types/float)

**戻り値**

sRGB の色値を表すタプル (R, G, B) を返します。[`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)

**例**

**OKLCH を sRGB に変換する**

```sql title=Query theme={null}
SELECT colorOKLCHToSRGB((0.6, 0.12, 40)) AS rgb;
```

```response title=Response theme={null}
┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘
```

**OKLCH を sRGB (UInt8) に変換**

```sql title=Query theme={null}
WITH colorOKLCHToSRGB((0.6, 0.12, 40)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘
```

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

導入バージョン: v26.2.0

**sRGB** 色空間でエンコードされた色を、知覚的に均一な **OKLAB** 色空間に変換します。

いずれかの入力チャネルが `[0...255]` の範囲外にある場合、またはガンマ値が 0 以下の場合の動作は実装依存です。

<Note>
  **OKLAB** は知覚的に均一な色空間です。
  その 3 つの座標は、`L` (`[0...1]` の範囲の明度) 、`a（緑-赤軸）`、`b（青-黄軸）` です。
  OKLab は、計算コストを抑えつつ知覚的に均一になるよう設計されています。
</Note>

変換は次の 2 段階で行われます。

1. sRGB から Linear sRGB
   2\) Linear sRGB から OKLab

**構文**

```sql theme={null}
colorSRGBToOKLAB(tuple[, gamma])
```

**引数**

* `tuple` — 範囲 `[0...255]` の 3 つの値 R、G、B からなるタプル。[`Tuple(UInt8, UInt8, UInt8)`](/ja/reference/data-types/tuple)
* `gamma` — オプション。各チャネル `x` に `(x / 255)^gamma` を適用して sRGB を線形化するために使用する指数です。デフォルトは `2.2` です。[`Float64`](/ja/reference/data-types/float)

**戻り値**

OKLAB 色空間の値を表すタプル `(L, a, b)` を返します。[`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)

**例**

**sRGB を OKLAB に変換する**

```sql title=Query theme={null}
SELECT colorSRGBToOKLAB((128, 64, 32), 2.2) AS lab;
```

```response title=Response theme={null}
┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘
```

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

導入バージョン: v25.7.0

**sRGB** 色空間でエンコードされた色を、知覚的に一様な **OKLCH** 色空間に変換します。

いずれかの入力チャネルが `[0...255]` の範囲外であるか、ガンマ値が 0 以下の場合の動作は実装依存です。

<Note>
  **OKLCH** は、OKLab 色空間の円筒座標表現です。
  その 3 つの座標は、`L` (`[0...1]` の範囲の明度) 、`C` (`>= 0` の彩度) 、`H` (`[0...360]` の範囲の度数で表した色相) です。
  OKLab/OKLCH は、計算コストを抑えつつ知覚的に一様になるよう設計されています。
</Note>

変換は次の 3 段階で行われます。

1. sRGB から Linear sRGB
   2\) Linear sRGB から OKLab
   3\) OKLab から OKLCH。

OKLCH 空間における色の参考例と、それらが sRGB の色にどう対応するかについては、[https://OKLCH.com/](https://OKLCH.com/) を参照してください。

**構文**

```sql theme={null}
colorSRGBToOKLCH(tuple[, gamma])
```

**引数**

* `tuple` — 範囲 `[0...255]` の 3 つの値 R、G、B からなる Tuple。[`Tuple(UInt8, UInt8, UInt8)`](/ja/reference/data-types/tuple)
* `gamma` — 省略可。各チャネル `x` に `(x / 255)^gamma` を適用して sRGB を線形化する際に使う指数。既定値は `2.2` です。[`Float64`](/ja/reference/data-types/float)

**戻り値**

OKLCH 色空間の値を表すタプル (L, C, H) を返します。[`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)

**例**

**sRGB を OKLCH に変換**

```sql title=Query theme={null}
SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch;
```

```response title=Response theme={null}
┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘
```

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

導入バージョン: v21.3.0

現在のクエリを送信したクライアントの接続 ID を返します。
この関数は、デバッグ時に特に有用です。
これは、MySQL の `CONNECTION_ID` 関数との互換性を保つために作成されました。
通常、本番環境のクエリでは使用されません。

**構文**

```sql theme={null}
connectionId()
```

**引数**

* ありません。

**戻り値**

現在のクライアントの接続 ID を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

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

```response title=Response theme={null}
┌─connectionId()─┐
│              0 │
└────────────────┘
```

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

導入バージョン: v20.8.0

値の表現に必要な10進数の桁数を返します。

<Note>
  この関数は10進数値の scale を考慮します。つまり、基になる整数型 `(value * scale)` に対して結果を計算します。

  例:

  * `countDigits(42) = 2`
  * `countDigits(42.000) = 5`
  * `countDigits(0.04200) = 4`
</Note>

<Tip>
  `Decimal64` の overflow は `countDigits(x) > 18` で確認できますが、
  [`isDecimalOverflow`](#isDecimalOverflow) を使用するより低速です。
</Tip>

**構文**

```sql theme={null}
countDigits(x)
```

**引数**

* `x` — 整数または小数値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

`x` の表現に必要な桁数を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT countDigits(toDecimal32(1, 9)), countDigits(toDecimal32(-1, 9)),
       countDigits(toDecimal64(1, 18)), countDigits(toDecimal64(-1, 18)),
       countDigits(toDecimal128(1, 38)), countDigits(toDecimal128(-1, 38));
```

```response title=Response theme={null}
┌─countDigits(toDecimal32(1, 9))─┬─countDigits(toDecimal32(-1, 9))─┬─countDigits(toDecimal64(1, 18))─┬─countDigits(toDecimal64(-1, 18))─┬─countDigits(toDecimal128(1, 38))─┬─countDigits(toDecimal128(-1, 38))─┐
│                             10 │                              10 │                              19 │                               19 │                               39 │                                39 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘
```

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

導入バージョン: v1.1.0

現在のデータベース名を返します。
データベースを指定する必要がある `CREATE TABLE` クエリのテーブルエンジンパラメータで便利です。

[`SET`ステートメント](/ja/reference/statements/use) も参照してください。

**構文**

```sql theme={null}
currentDatabase()
```

**別名**: `current_database`, `SCHEMA`, `DATABASE`

**引数**

* ありません。

**戻り値**

現在のデータベース名を返します。 [`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT currentDatabase()
```

```response title=Response theme={null}
┌─currentDatabase()─┐
│ default           │
└───────────────────┘
```

**SQL 標準構文**

```sql title=Query theme={null}
SELECT CURRENT_DATABASE
```

```response title=Response theme={null}
┌─CURRENT_DATABASE─┐
│ default          │
└──────────────────┘
```

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

導入バージョン: v21.9.0

現在のユーザーに設定されている設定プロファイルの配列を返します。

**構文**

```sql theme={null}
currentProfiles()
```

**引数**

* ありません。

**戻り値**

現在のユーザーの設定プロファイルの配列を返します。[`Array(String)`](/ja/reference/data-types/array)

**例**

**使用例**

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

```response title=Response theme={null}
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘
```

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

導入バージョン: v25.2.0

現在の Query id を返します。

**構文**

```sql theme={null}
currentQueryID()
```

**別名**: `current_query_id`

**引数**

* なし。

**戻り値**

**例**

**例**

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

```response title=Response theme={null}
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘
```

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

導入バージョン: v21.9.0

現在のユーザーに付与されているロールの配列を返します。

**構文**

```sql theme={null}
currentRoles()
```

**引数**

* なし。

**戻り値**

現在のユーザーに割り当てられているロールの配列を返します。[`Array(String)`](/ja/reference/data-types/array)

**例**

**使用例**

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

```response title=Response theme={null}
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

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

導入バージョン: v23.7.0

関数 [`currentDatabase`](#currentDatabase) と同じですが、次の点が異なります。

* 無視される真偽値の引数を受け取ります
* データベース名を、単一の値を含む配列として返します。

関数 `currentSchemas` は、PostgreSQL との互換性のためにのみ存在します。
代わりに `currentDatabase` を使用してください。

[`SET` ステートメント](/ja/reference/statements/use) も参照してください。

**構文**

```sql theme={null}
currentSchemas(bool)
```

**別名**: `current_schemas`

**引数**

* `bool` — 無視されるブール値。[`Bool`](/ja/reference/data-types/boolean)

**戻り値**

現在のデータベース名を含む単一要素の配列を返します。[`Array(String)`](/ja/reference/data-types/array)

**例**

**使用例**

```sql title=Query theme={null}
SELECT currentSchemas(true)
```

```response title=Response theme={null}
┌─currentSchemas(true)─┐
│ ['default']          │
└──────────────────────┘
```

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

導入バージョン: v20.1.0

現在のユーザー名を返します。
分散クエリの場合は、クエリを開始したユーザー名が返されます。

**構文**

```sql theme={null}
currentUser()
```

**別名**: `session_user`, `user`, `current_user`

**引数**

* なし。

**戻り値**

現在のユーザー名、またはクエリを開始したユーザーのログイン名を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT currentUser()
```

```response title=Response theme={null}
┌─currentUser()─┐
│ default       │
└───────────────┘
```

**SQL 標準構文**

```sql title=Query theme={null}
SELECT CURRENT_USER
```

```response title=Response theme={null}
┌─CURRENT_USER─┐
│ default      │
└──────────────┘
```

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

導入バージョン: v21.9.0

現在のユーザーに対するデフォルトの設定プロファイル名の配列を返します。

**構文**

```sql theme={null}
defaultProfiles()
```

**引数**

* なし

**戻り値**

現在のユーザーのデフォルトの設定プロファイル名の配列を返します。[`Array(String)`](/ja/reference/data-types/array)

**例**

**使用例**

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

```response title=Response theme={null}
┌─defaultProfiles()─┐
│ ['default']       │
└───────────────────┘
```

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

導入バージョン: v21.9.0

現在のユーザーに設定されているデフォルトロールの配列を返します。

**構文**

```sql theme={null}
defaultRoles()
```

**引数**

* なし。

**戻り値**

現在のユーザーのデフォルトロールの配列を返します。 [`Array(String)`](/ja/reference/data-types/array)

**例**

**使用例**

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

```response title=Response theme={null}
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

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

導入バージョン: v1.1.0

指定されたデータ型のデフォルト値を返します。
ユーザーが設定したカスタムカラムのデフォルト値は含まれません。

**構文**

```sql theme={null}
defaultValueOfArgumentType(expression)
```

**引数**

* `expression` — 任意の型の値、または任意の型の値になる式。[`Any`](/ja/reference/data-types/index)

**戻り値**

数値型の場合は `0`、文字列型の場合は空文字列、Nullable 型の場合は `NULL` を返します。[`UInt8`](/ja/reference/data-types/int-uint) または [`String`](/ja/reference/data-types/string) または [`NULL`](/ja/reference/syntax#null)

**例**

**使用例**

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Int8));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│                                           0 │
└─────────────────────────────────────────────┘
```

**Nullable の例**

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Nullable(Int8)));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│                                                  ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘
```

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

導入バージョン: v1.1.0

指定された型名のデフォルト値を返します。

**構文**

```sql theme={null}
defaultValueOfTypeName(type)
```

**引数**

* `type` — 型名を表す文字列。 [`String`](/ja/reference/data-types/string)

**戻り値**

指定した型名のデフォルト値を返します。数値型の場合は `0`、文字列型の場合は空文字列、Nullable [`UInt8`](/ja/reference/data-types/int-uint) または [`String`](/ja/reference/data-types/string)、あるいは [`NULL`](/ja/reference/syntax#null) の場合は `NULL` です。

**例**

**使用例**

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Int8');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Int8')─┐
│                              0 │
└────────────────────────────────┘
```

**Nullableの例**

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Nullable(Int8)');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│                                     ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘
```

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

導入バージョン: v22.11.0

[config](/ja/concepts/features/configuration/server-config/configuration-files) の `display_name` の値を返します。設定されていない場合は、サーバーの完全修飾ドメイン名 (FQDN) を返します。

**構文**

```sql theme={null}
displayName()
```

**引数**

* なし。

**戻り値**

config の `display_name` の値を返します。設定されていない場合は、サーバーの FQDN を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

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

```response title=Response theme={null}
┌─displayName()─┐
│ production    │
└───────────────┘
```

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

導入バージョン: v1.1.0

カラムの内部構造とそのデータ型について、詳細な説明を出力します。

**構文**

```sql theme={null}
dumpColumnStructure(x)
```

**引数**

* `x` — 説明を取得する対象の値。[`Any`](/ja/reference/data-types/index)

**戻り値**

値の表現に使用されるカラム構造の説明を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'));
```

```response title=Response theme={null}
┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1))                  │
└──────────────────────────────────────────────────────────────┘
```

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

導入バージョン: v21.9.0

現在のユーザーで有効な設定プロファイル名の配列を返します。

**構文**

```sql theme={null}
enabledProfiles()
```

**引数**

* なし。

**戻り値**

現在のユーザーで有効になっている設定プロファイル名の配列を返します。 [`Array(String)`](/ja/reference/data-types/array)

**例**

**使用例**

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

```response title=Response theme={null}
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘
```

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

導入バージョン: v21.9.0

現在のユーザーで有効になっているロールの配列を返します。

**構文**

```sql theme={null}
enabledRoles()
```

**引数**

* なし。

**戻り値**

現在のユーザーで有効なロール名の配列を返します。[`Array(String)`](/ja/reference/data-types/array)

**例**

**使用例**

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

```response title=Response theme={null}
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────────────────────┘
```

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

導入バージョン: v20.12.0

数値の ClickHouse エラーコードに対応するエラー名のテキストを返します。
数値のエラーコードとエラー名の対応は[こちら](https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/ErrorCodes.cpp)で確認できます。

**構文**

```sql theme={null}
errorCodeToName(error_code)
```

**引数**

* `error_code` — ClickHouse のエラーコード。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

`error_code` のテキスト形式の名前を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT errorCodeToName(252);
```

```response title=Response theme={null}
┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS       │
└──────────────────────┘
```

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

導入バージョン: v21.3.0

ファイルを文字列として読み取り、その内容を指定したカラムに読み込みます。
ファイルの内容は解釈されません。

[`file`](/ja/reference/functions/table-functions/file) テーブル関数も参照してください。

**構文**

```sql theme={null}
file(path[, default])
```

**引数**

* `path` — `user_files_path` からの相対パス。ワイルドカード `*`、`**`、`?`、`{abc,def}`、`{N..M}` をサポートします。ここで、`N` と `M` は数値、`'abc'` と `'def'` は文字列です。[`String`](/ja/reference/data-types/string)
* `default` — ファイルが存在しない場合、またはアクセスできない場合に返される値。[`String`](/ja/reference/data-types/string) または [`NULL`](/ja/reference/syntax#null)

**戻り値**

ファイルの内容を文字列として返します。[`String`](/ja/reference/data-types/string)

**例**

**ファイルをテーブルに挿入**

```sql title=Query theme={null}
INSERT INTO table SELECT file('a.txt'), file('b.txt');
```

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

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

導入バージョン: v20.1.0

データベースの永続化先があるファイルシステムの空き容量を返します。
オペレーティングシステム用に一部の領域が予約されているため、戻り値は常に合計の空き容量 ([`filesystemUnreserved`](/ja/reference/functions/regular-functions/other-functions#filesystemUnreserved)) よりも小さくなります。

**構文**

```sql theme={null}
filesystemAvailable([disk_name])
```

**引数**

* `disk_name` — 任意。空き容量を取得する対象のディスク名です。省略した場合は、デフォルトのディスクが使用されます。 [`String`](/ja/reference/data-types/string) または [`FixedString`](/ja/reference/data-types/fixedstring)

**戻り値**

利用可能な残りの空き容量をバイト単位で返します。 [`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemAvailable()) AS "Available space";
```

```response title=Response theme={null}
┌─Available space─┐
│ 30.75 GiB       │
└─────────────────┘
```

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

導入バージョン: v20.1.0

ファイルシステムの容量をバイト単位で返します。
データディレクトリへの [path](/ja/reference/settings/server-settings/settings#path) を設定しておく必要があります。

**構文**

```sql theme={null}
filesystemCapacity([disk_name])
```

**引数**

* `disk_name` — 任意。容量を取得する対象のディスク名です。省略した場合は、デフォルトのディスクが使用されます。[`String`](/ja/reference/data-types/string) または [`FixedString`](/ja/reference/data-types/fixedstring)

**戻り値**

ファイルシステムの容量をバイト単位で返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";
```

```response title=Response theme={null}
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘
```

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

導入バージョン: v22.12.0

データベースの永続化ストレージをホストするファイルシステム上の空き領域の総量を返します (以前の名前は `filesystemFree`) 。
関連項目: [`filesystemAvailable`](#filesystemAvailable)。

**構文**

```sql theme={null}
filesystemUnreserved([disk_name])
```

**引数**

* `disk_name` — 省略可能。空き容量の合計を取得する対象のディスク名です。省略した場合は、デフォルトのディスクが使用されます。[`String`](/ja/reference/data-types/string) または [`FixedString`](/ja/reference/data-types/fixedstring)

**戻り値**

空き容量をバイト単位で返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";
```

```response title=Response theme={null}
┌─Free space─┐
│ 32.39 GiB  │
└────────────┘
```

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

導入バージョン: v1.1.0

集約状態を受け取り、この関数は集約結果を返します ([-State](/ja/reference/functions/aggregate-functions/combinators#-state) コンビネータを使用している場合は、確定された状態を返します) 。

**構文**

```sql theme={null}
finalizeAggregation(state)
```

**引数**

* `state` — 集約状態。[`AggregateFunction`](/ja/reference/data-types/aggregatefunction)

**戻り値**

集約を確定した結果を返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
SELECT finalizeAggregation(arrayReduce('maxState', [1, 2, 3]));
```

```response title=Response theme={null}
┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│                                                       3 │
└─────────────────────────────────────────────────────────┘
```

**initializeAggregation と併用**

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

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

導入バージョン: v25.11.0

ジオメトリオブジェクトの x 座標と y 座標を入れ替えます。この操作では緯度と経度が入れ替わるため、異なる座標系間の変換や座標順序の修正に役立ちます。

Point では x 座標と y 座標を入れ替えます。複雑なジオメトリ (LineString、Polygon、MultiPolygon、Ring、MultiLineString) では、各座標ペアにこの変換が再帰的に適用されます。

この関数は、個別のジオメトリ型 (Point、Ring、Polygon、MultiPolygon、LineString、MultiLineString) と Geometry Variant 型の両方をサポートします。

**構文**

```sql theme={null}
flipCoordinates(geometry)
```

**引数**

* `geometry` — 変換対象のジオメトリ。対応する型: Point (Tuple(Float64, Float64)), Ring (Array(Point)), Polygon (Array(Ring)), MultiPolygon (Array(Polygon)), LineString (Array(Point)), MultiLineString (Array(LineString)), または Geometry (これらのいずれかの型を含むバリアント) 。

**戻り値**

座標が反転されたジオメトリ。戻り値の型は入力型と一致します。[`Point`](/ja/reference/data-types/geo#point) または [`Ring`](/ja/reference/data-types/geo#ring) または [`Polygon`](/ja/reference/data-types/geo#polygon) または [`MultiPolygon`](/ja/reference/data-types/geo#multipolygon) または [`LineString`](/ja/reference/data-types/geo#linestring) または [`MultiLineString`](/ja/reference/data-types/geo#multilinestring) または [`Geometry`](/ja/reference/data-types/geo)

**例**

**basic\_point**

```sql title=Query theme={null}
SELECT flipCoordinates((1.0, 2.0));
```

```response title=Response theme={null}
(2.0, 1.0)
```

**リング**

```sql title=Query theme={null}
SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
```

```response title=Response theme={null}
[(2.0, 1.0), (4.0, 3.0)]
```

**polygon**

```sql title=Query theme={null}
SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
```

```response title=Response theme={null}
[[(2.0, 1.0), (4.0, 3.0)], [(6.0, 5.0), (8.0, 7.0)]]
```

**geometry\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POINT(10 20)'));
```

```response title=Response theme={null}
(20, 10)
```

**geometry\_polygon\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'));
```

```response title=Response theme={null}
[[(0, 0), (0, 5), (5, 5), (5, 0), (0, 0)]]
```

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

導入バージョン: v23.10.0

指定された SQL クエリを整形して返します。出力は複数行になる場合があります。パースエラーが発生した場合は例外をスローします。
\[example:multiline]

**構文**

```sql theme={null}
formatQuery(query)
```

**引数**

* `query` — フォーマットする SQL クエリ。 [String](/ja/reference/data-types/string)

**戻り値**

フォーマットされたクエリ [`String`](/ja/reference/data-types/string)

**例**

**複数行**

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

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

導入バージョン: v23.11.0

指定されたSQLクエリを整形したものを返します。結果は複数行になる場合があります。パースエラーの場合はNULLを返します。
\[example:multiline]

**構文**

```sql theme={null}
formatQueryOrNull(query)
```

**引数**

* `query` — 整形する対象のSQLクエリ。[String](/ja/reference/data-types/string)

**戻り値**

フォーマットされたクエリ [`String`](/ja/reference/data-types/string)

**例**

**複数行**

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

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

導入バージョン: v23.10.0

formatQuery() と同様ですが、返される整形済み文字列には改行が含まれません。パースエラーが発生した場合は例外をスローします。
\[example:multiline]

**構文**

```sql theme={null}
formatQuerySingleLine(query)
```

**引数**

* `query` — フォーマット対象のSQLクエリ。[String](/ja/reference/data-types/string)

**戻り値**

フォーマット後のクエリ [`String`](/ja/reference/data-types/string)

**例**

**複数行**

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

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

導入バージョン: v23.11.0

formatQuery() と同様ですが、返されるフォーマット済み文字列には改行が含まれません。パース エラーが発生した場合は NULL を返します。
\[example:multiline]

**構文**

```sql theme={null}
formatQuerySingleLineOrNull(query)
```

**引数**

* `query` — フォーマット対象のSQLクエリ。[`String`](/ja/reference/data-types/string)

**戻り値**

フォーマット済みのクエリ [`String`](/ja/reference/data-types/string)

**例**

**複数行**

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

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

導入バージョン: v22.11.0

サイズ (バイト数) を受け取り、接尾辞 (KB、MB など) 付きの、読みやすく丸められたサイズを文字列として返します。

この関数の逆の操作は [`parseReadableSize`](#parseReadableSize) です。

**構文**

```sql theme={null}
formatReadableDecimalSize(value[, precision])
```

**引数**

* `value` — バイト単位のサイズ。[`Int8`](/ja/reference/data-types/int-uint) または [`Int16`](/ja/reference/data-types/int-uint) または [`Int32`](/ja/reference/data-types/int-uint) または [`Int64`](/ja/reference/data-types/int-uint) または [`UInt8`](/ja/reference/data-types/int-uint) または [`UInt16`](/ja/reference/data-types/int-uint) または [`UInt32`](/ja/reference/data-types/int-uint) または [`UInt64`](/ja/reference/data-types/int-uint) または [`Float32`](/ja/reference/data-types/float) または [`Float64`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)
* `precision` — オプション。精度。デフォルトは 2 です。[`const UInt8`](/ja/reference/data-types/int-uint)

**戻り値**

接尾辞付きの、読みやすく丸められたサイズを文字列で返します。[`String`](/ja/reference/data-types/string)

**例**

**ファイルサイズを見やすい形式で表示する**

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableDecimalSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.02 KB    │
│        1048576 │ 1.05 MB    │
│      192851925 │ 192.85 MB  │
└────────────────┴────────────┘
```

**精度を明示的に指定する**

```sql title=Query theme={null}
SELECT
    formatReadableDecimalSize(192851925, 0) AS no_decimals,
    formatReadableDecimalSize(192851925, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals─┬─four_decimals─┐
│ 193 MB      │ 192.8519 MB   │
└─────────────┴───────────────┘
```

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

導入バージョン: v20.10.0

数値を指定すると、この関数は接尾辞 (thousand、million、billion など) を付けた丸め後の数値を文字列として返します。

この関数は入力として任意の数値型を受け付けますが、内部的にはそれらを `Float64` にキャストします。
値が大きい場合、結果が不正確になることがあります。

**構文**

```sql theme={null}
formatReadableQuantity(value[, precision])
```

**引数**

* `value` — フォーマットする数値です。[`Int8`](/ja/reference/data-types/int-uint) または [`Int16`](/ja/reference/data-types/int-uint) または [`Int32`](/ja/reference/data-types/int-uint) または [`Int64`](/ja/reference/data-types/int-uint) または [`UInt8`](/ja/reference/data-types/int-uint) または [`UInt16`](/ja/reference/data-types/int-uint) または [`UInt32`](/ja/reference/data-types/int-uint) または [`UInt64`](/ja/reference/data-types/int-uint) または [`Float32`](/ja/reference/data-types/float) または [`Float64`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)
* `precision` — 任意です。精度を指定します。デフォルトは 2 です。[`const UInt8`](/ja/reference/data-types/int-uint)

**戻り値**

接尾辞付きに丸めた数値を文字列として返します。[`String`](/ja/reference/data-types/string)

**例**

**数値を接尾辞付きでフォーマットする**

```sql title=Query theme={null}
SELECT
    arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number,
    formatReadableQuantity(number) AS number_for_humans
```

```response title=Response theme={null}
┌─────────number─┬─number_for_humans─┐
│           1024 │ 1.02 thousand     │
│        1234000 │ 1.23 million      │
│     4567000000 │ 4.57 billion      │
│ 98765432101234 │ 98.77 trillion    │
└────────────────┴───────────────────┘
```

**精度を明示的に指定する**

```sql title=Query theme={null}
SELECT
    formatReadableQuantity(98765432101234, 0) AS no_decimals,
    formatReadableQuantity(98765432101234, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals──┬─four_decimals─────┐
│ 99 trillion  │ 98.7654 trillion  │
└──────────────┴───────────────────┘
```

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

導入バージョン: v1.1.0

サイズ (バイト数) を指定すると、この関数は接尾辞 (KiB、MiB など) 付きの、読みやすく丸められたサイズを文字列で返します。

この関数の逆の処理を行うのは [`parseReadableSize`](#parseReadableSize)、[`parseReadableSizeOrZero`](#parseReadableSizeOrZero)、および [`parseReadableSizeOrNull`](#parseReadableSizeOrNull) です。
この関数は入力として任意の数値型を受け付けますが、内部ではそれらを `Float64` にキャストします。値が大きい場合、結果が最適にならないことがあります。

**構文**

```sql theme={null}
formatReadableSize(value[, precision])
```

**別名**: `FORMAT_BYTES`

**引数**

* `value` — バイト単位のサイズ。[`Int8`](/ja/reference/data-types/int-uint) または [`Int16`](/ja/reference/data-types/int-uint) または [`Int32`](/ja/reference/data-types/int-uint) または [`Int64`](/ja/reference/data-types/int-uint) または [`UInt8`](/ja/reference/data-types/int-uint) または [`UInt16`](/ja/reference/data-types/int-uint) または [`UInt32`](/ja/reference/data-types/int-uint) または [`UInt64`](/ja/reference/data-types/int-uint) または [`Float32`](/ja/reference/data-types/float) または [`Float64`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)
* `precision` — 省略可能です。精度です。デフォルトは 2 です。[`const UInt8`](/ja/reference/data-types/int-uint)

**戻り値**

接尾辞付きで、読みやすいように丸められたサイズを文字列で返します。[`String`](/ja/reference/data-types/string)

**例**

**ファイルサイズのフォーマット**

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.00 KiB   │
│        1048576 │ 1.00 MiB   │
│      192851925 │ 183.92 MiB │
└────────────────┴────────────┘
```

**精度を明示的に指定した場合**

```sql title=Query theme={null}
SELECT
    formatReadableSize(192851925, 0) AS no_decimals,
    formatReadableSize(192851925, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals─┬─four_decimals──┐
│ 184 MiB     │ 183.9179 MiB   │
└─────────────┴────────────────┘
```

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

導入バージョン: v20.12.0

秒単位の時間間隔 (delta) または `INTERVAL` 式が与えられると、この関数は年/月/日/時/分/秒/ミリ秒/マイクロ秒/ナノ秒を含む時間差を文字列で返します。

この関数は任意の数値型を入力として受け付けますが、内部的にはそれらを `Float64` にキャストします。値が大きい場合、結果が最適でないことがあります。

`INTERVAL` 式が渡されると、その値は秒に変換されます。`MONTH` 以上の interval 単位 (`MONTH`、`QUARTER`、`YEAR`) は、秒単位で固定長の間隔を表さないため、サポートされていません。

**構文**

```sql theme={null}
formatReadableTimeDelta(column[, maximum_unit, minimum_unit])
```

**引数**

* `column` — 数値の時間差を表すカラム、または `INTERVAL` 式。`MONTH` 以上の Interval 単位はサポートされていません。[`Float64`](/ja/reference/data-types/float) または [`Interval`](/ja/reference/data-types/int-uint)
* `maximum_unit` — 任意。表示する最大の単位。有効な値: `nanoseconds`、`microseconds`、`milliseconds`、`seconds`、`minutes`、`hours`、`days`、`months`、`years`。デフォルト値: `years`。[`const String`](/ja/reference/data-types/string)
* `minimum_unit` — 任意。表示する最小の単位。これより小さい単位はすべて切り捨てられます。有効な値: `nanoseconds`、`microseconds`、`milliseconds`、`seconds`、`minutes`、`hours`、`days`、`months`、`years`。明示的に指定した値が `maximum_unit` より大きい場合は、例外がスローされます。デフォルト値: `maximum_unit` が `seconds` 以上の場合は `seconds`、それ以外の場合は `nanoseconds`。[`const String`](/ja/reference/data-types/string)

**戻り値**

時間差を文字列として返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed) AS time_delta
```

```response title=Response theme={null}
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                        │
│      12345 │ 3 hours, 25 minutes and 45 seconds                             │
│  432546534 │ 13 years, 8 months, 17 days, 7 hours, 48 minutes and 54 seconds│
└────────────┴────────────────────────────────────────────────────────────────┘
```

**最大単位付き**

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
```

```response title=Response theme={null}
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                         │
│      12345 │ 205 minutes and 45 seconds                                      │
│  432546534 │ 7209108 minutes and 54 seconds                                  │
└────────────┴─────────────────────────────────────────────────────────────────┘
```

**INTERVAL 式を使用する場合**

```sql title=Query theme={null}
SELECT formatReadableTimeDelta(INTERVAL 12345 SECOND) AS time_delta
```

```response title=Response theme={null}
┌─time_delta─────────────────────────┐
│ 3 hours, 25 minutes and 45 seconds │
└────────────────────────────────────┘
```

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

導入バージョン: v26.2.0

指定されたクエリ文字列を解析し、ランダムな AST ミューテーション (ファジング) を適用します。ファジングされたクエリを文字列として返します。非決定論的で、呼び出すたびに異なる結果になる場合があります。`allow_fuzz_query_functions = 1` が必要です。

**構文**

```sql theme={null}
fuzzQuery(query)
```

**引数**

* `query` — ファズ対象の SQL クエリ。[String](/ja/reference/data-types/string)

**戻り値**

ファズ処理されたクエリ文字列 [`String`](/ja/reference/data-types/string)

**例**

**基本的な例**

```sql title=Query theme={null}
SET allow_fuzz_query_functions = 1; SELECT fuzzQuery('SELECT 1');
```

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

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

導入バージョン: v23.5.0

`column1_name column1_type, column2_name column2_type, ...` の形式でランダムなテーブルの構造を生成します。

**構文**

```sql theme={null}
generateRandomStructure([number_of_columns, seed])
```

**引数**

* `number_of_columns` — 生成されるテーブル構造のカラム数。0 または `Null` に設定すると、カラム数は 1〜128 の範囲でランダムに決まります。デフォルト値: `Null`。 [`UInt64`](/ja/reference/data-types/int-uint)
* `seed` — 再現可能な結果を得るための乱数シード。seed が指定されていないか `Null` に設定されている場合は、ランダムに生成されます。 [`UInt64`](/ja/reference/data-types/int-uint)

**戻り値**

ランダムに生成されたテーブル構造。 [`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT generateRandomStructure()
```

```response title=Response theme={null}
c1 Decimal32(5), c2 Date, c3 Tuple(LowCardinality(String), Int128, UInt64, UInt16, UInt8, IPv6), c4 Array(UInt128), c5 UInt32, c6 IPv4, c7 Decimal256(64), c8 Decimal128(3), c9 UInt256, c10 UInt64, c11 DateTime
```

**指定したカラム数の**

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

```response title=Response theme={null}
c1 Map(UInt256, UInt16)
```

**指定したシードで**

```sql title=Query theme={null}
SELECT generateRandomStructure(NULL, 33)
```

```response title=Response theme={null}
c1 DateTime, c2 Enum8('c2V0' = 0, 'c2V1' = 1, 'c2V2' = 2, 'c2V3' = 3), c3 LowCardinality(Nullable(FixedString(30))), c4 Int16, c5 Enum8('c5V0' = 0, 'c5V1' = 1, 'c5V2' = 2, 'c5V3' = 3), c6 Nullable(UInt8), c7 String, c8 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(70)))
```

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

導入バージョン: v25.1.0

前回のカウンター値に続く連番を生成して返します。
この関数は、文字列の引数 (シリーズ識別子) と、省略可能な開始値を受け取ります。
サーバーは Keeper を使用するように設定する必要があります。
シリーズはパス配下の Keeper ノードに保存され、このパスはサーバー設定の [`series_keeper_path`](/ja/reference/settings/server-settings/settings#series_keeper_path) で設定できます。

**構文**

```sql theme={null}
generateSerialID(series_identifier[, start_value])
```

**引数**

* `series_identifier` — シリーズ識別子 [`const String`](/ja/reference/data-types/string)
* `start_value` — 任意。カウンターの開始値です。デフォルトは 0 です。注意: この値が使用されるのは新しいシリーズを作成する場合のみで、シリーズがすでに存在する場合は無視されます [`UInt*`](/ja/reference/data-types/int-uint)

**戻り値**

直前のカウンター値に続く連番を返します。 [`UInt64`](/ja/reference/data-types/int-uint)

**例**

**最初の呼び出し**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        1 │
└──────────────────────────┘
```

**2回目の呼び出し**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        2 │
└──────────────────────────┘
```

**カラムの呼び出し**

```sql title=Query theme={null}
SELECT *, generateSerialID('id1') FROM test_table
```

```response title=Response theme={null}
┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')──┐
│         1 │      3 │   3 │                        3 │
│         1 │      1 │   1 │                        4 │
│         1 │      2 │   2 │                        5 │
│         1 │      5 │   5 │                        6 │
│         1 │      4 │   4 │                        7 │
└───────────┴────────┴─────┴──────────────────────────┘
```

**開始値あり**

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           100 │
└───────────────────────────────┘
```

**開始値を指定した2回目の呼び出し**

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           101 │
└───────────────────────────────┘
```

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

導入バージョン: v24.5.0

HTTPヘッダーの値を取得します。
該当するヘッダーが存在しない場合、または現在のリクエストが HTTPインターフェイス 経由で実行されていない場合、この関数は空文字列を返します。
一部の HTTPヘッダー (例: `Authentication` および `X-ClickHouse-*`) は制限されています。

<Info>
  **Setting `allow_get_client_http_header` が必要です**

  この関数を使用するには、setting `allow_get_client_http_header` を有効にする必要があります。
  `Cookie` などの一部のヘッダーに機微な情報が含まれる可能性があるため、セキュリティ上の理由から、この setting はデフォルトでは有効になっていません。
</Info>

この関数では、HTTPヘッダーは大文字と小文字が区別されます。
分散クエリのコンテキストでこの関数を使用した場合、空でない結果が返されるのはイニシエーター ノード上のみです。

**構文**

```sql theme={null}
getClientHTTPHeader(name)
```

**引数**

* `name` — HTTP ヘッダーの名前。[`String`](/ja/reference/data-types/string)

**戻り値**

ヘッダーの値を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT getClientHTTPHeader('Content-Type');
```

```response title=Response theme={null}
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded   │
└─────────────────────────────────────┘
```

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

導入バージョン: v20.1.0

サーバー設定ファイルからマクロの値を返します。
マクロは設定ファイルの[`<macros>`](/ja/reference/settings/server-settings/settings#macros)セクションで定義され、ホスト名が複雑な場合でも、わかりやすい名前でサーバーを識別するために使用できます。
この関数を分散テーブル上で実行すると、各分片に対応する値を持つ通常のカラムが生成されます。

**構文**

```sql theme={null}
getMacro(name)
```

**引数**

* `name` — 取得するマクロの名前。[`const String`](/ja/reference/data-types/string)

**戻り値**

指定したマクロの値を返します。[`String`](/ja/reference/data-types/string)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT getMacro('test');
```

```response title=Response theme={null}
┌─getMacro('test')─┐
│ Value            │
└──────────────────┘
```

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

導入バージョン: v25.1.0

指定したデータベース内のテーブル名の最大長を返します。

**構文**

```sql theme={null}
getMaxTableNameLengthForDatabase(database_name)
```

**引数**

* `database_name` — 指定したデータベースの名前。[`String`](/ja/reference/data-types/string)

**戻り値**

最大のテーブル名の長さを表す整数値を返します

**例**

**一般的な例**

```sql title=Query theme={null}
SELECT getMaxTableNameLengthForDatabase('default');
```

```response title=Response theme={null}
┌─getMaxTableNameLengthForDatabase('default')─┐
            │                                         206 │
            └─────────────────────────────────────────────┘
```

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

導入バージョン: v25.6.0

MergeTree設定の現在の値を返します。

**構文**

```sql theme={null}
getMergeTreeSetting(setting_name)
```

**引数**

* `setting_name` — 設定の名前。 [`String`](/ja/reference/data-types/string)

**戻り値**

MergeTree 設定の現在の値を返します。

**例**

**使用例**

```sql title=Query theme={null}
SELECT getMergeTreeSetting('index_granularity');
```

```response title=Response theme={null}
┌─getMergeTreeSetting('index_granularity')─┐
│                                     8192 │
└──────────────────────────────────────────┘
```

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

導入バージョン: v21.11.0

OS カーネルのバージョンを含む文字列を返します。

**構文**

```sql theme={null}
getOSKernelVersion()
```

**引数**

* なし

**戻り値**

現在の OS カーネルのバージョンを返します。 [`String`](/ja/reference/data-types/string)

**例**

**使用例**

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

```response title=Response theme={null}
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘
```

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

導入バージョン: v21.10.0

指定したプロトコルのサーバーのポート番号を返します。

**構文**

```sql theme={null}
getServerPort(port_name)
```

**引数**

* `port_name` — ポート名。[`String`](/ja/reference/data-types/string)

**戻り値**

サーバーのポート番号を返します。[`UInt16`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT getServerPort('tcp_port');
```

```response title=Response theme={null}
┌─getServerPort('tcp_port')─┐
│                      9000 │
└───────────────────────────┘
```

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

導入バージョン: v25.6.0

サーバー設定の名前を指定すると、現在設定されている値を返します。

**構文**

```sql theme={null}
getServerSetting(setting_name')
```

**引数**

* `setting_name` — サーバー設定の名前。[`String`](/ja/reference/data-types/string)

**戻り値**

サーバー設定の現在の値を返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
SELECT getServerSetting('allow_use_jemalloc_memory');
```

```response title=Response theme={null}
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true                                          │
└───────────────────────────────────────────────┘
```

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

導入バージョン: v20.7.0

設定の現在の値を返します。

**構文**

```sql theme={null}
getSetting(setting_name)
```

**引数**

* `setting_Name` — 設定名。 [`const String`](/ja/reference/data-types/string)

**戻り値**

設定の現在の値を返します。 [`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');
```

```response title=Response theme={null}
┌─getSetting('⋯_analyzer')─┐
│ true                     │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false                    │
└──────────────────────────┘
```

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

導入バージョン: v24.10.0

設定の現在の値を返します。現在のプロファイルでその設定が指定されていない場合は、2 番目の引数で指定されたデフォルト値を返します。

**構文**

```sql theme={null}
getSettingOrDefault(setting_name, default_value)
```

**引数**

* `setting_name` — 設定名。[`String`](/ja/reference/data-types/string)
* `default_value` — custom\_setting が設定されていない場合に返される値。値には任意のデータ型または Null を指定できます。

**戻り値**

指定した設定の現在の値を返します。設定されていない場合は `default_value` を返します。

**例**

**使用例**

```sql title=Query theme={null}
SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);
```

```response title=Response theme={null}
my_value
100
NULL
```

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

導入バージョン: v1.1.0

指定された[`Enum`](/ja/reference/data-types/enum)に含まれるフィールドの数を返します。

**構文**

```sql theme={null}
getSizeOfEnumType(x)
```

**引数**

* `x` — `Enum` 型の値。[`Enum`](/ja/reference/data-types/enum)

**戻り値**

`Enum` 型の入力値を持つフィールドの数を返します。[`UInt8/16`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

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

導入バージョン: v23.3.0

式または識別子と、サブカラム名を表す定数文字列を受け取ります。

式から抽出した指定のサブカラムを返します。

**構文**

```sql theme={null}
getSubcolumn(nested_value, subcolumn_name)
```

**引数**

* なし。

**戻り値**

**例**

**getSubcolumn**

```sql title=Query theme={null}
SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')
```

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

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

導入バージョン: v22.6.0

データ型のストリームパスを列挙します。
この関数は開発目的での使用を想定しています。

**構文**

```sql theme={null}
getTypeSerializationStreams(col)
```

**引数**

* `col` — データ型を検出する対象の、カラム、またはデータ型の文字列表現。[`Any`](/ja/reference/data-types/index)

**戻り値**

すべてのシリアライゼーションのサブストリームパスを含む配列を返します。[`Array(String)`](/ja/reference/data-types/array)

**例**

**tuple**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams(tuple('a', 1, 'b', 2))
```

```response title=Response theme={null}
['{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']
```

**map**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams('Map(String, Int64)')
```

```response title=Response theme={null}
['{ArraySizes}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']
```

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

導入バージョン: v20.5.0

定数の文字列引数を受け取り、その名前を持つグローバル変数の値を返します。この関数は MySQL との互換性のためのもので、ClickHouse の通常の運用では必要でも有用でもありません。定義されているダミーのグローバル変数はごくわずかです。

**構文**

```sql theme={null}
globalVariable(name)
```

**引数**

* `name` — グローバル変数の名前。[`String`](/ja/reference/data-types/string)

**戻り値**

変数 `name` の値を返します。[`Any`](/ja/reference/data-types/index)

**例**

**globalVariable**

```sql title=Query theme={null}
SELECT globalVariable('max_allowed_packet')
```

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

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

導入バージョン: v1.1.0

データベース内のテーブルに特定のカラムが存在するかどうかを確認します。
ネストされたデータ構造内の要素については、この関数はカラムの存在を確認します。
ネストされたデータ構造そのものに対しては、この関数は `0` を返します。

**構文**

```sql theme={null}
hasColumnInTable([hostname[, username[, password]],]database, table, column)
```

**引数**

* `database` — データベース名。[`const String`](/ja/reference/data-types/string)
* `table` — テーブル名。[`const String`](/ja/reference/data-types/string)
* `column` — カラム名。[`const String`](/ja/reference/data-types/string)
* `hostname` — 任意。確認を実行するリモートサーバー名。[`const String`](/ja/reference/data-types/string)
* `username` — 任意。リモートサーバーのユーザー名。[`const String`](/ja/reference/data-types/string)
* `password` — 任意。リモートサーバーのパスワード。[`const String`](/ja/reference/data-types/string)

**戻り値**

指定したカラムが存在する場合は `1`、存在しない場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**既存のカラムを確認する**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','metric')
```

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

**存在しないカラムをチェックする**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','non-existing_column')
```

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

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

導入バージョン: v20.6.0

thread fuzzer が有効になっているかどうかを返します。
この関数は、テストとデバッグにのみ有用です。

**構文**

```sql theme={null}
hasThreadFuzzer()
```

**引数**

* なし。

**戻り値**

Thread Fuzzer が有効になっているかどうかを返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**Thread Fuzzer の状態を確認する**

```sql title=Query theme={null}
SELECT hasThreadFuzzer()
```

```response title=Response theme={null}
┌─hasThreadFuzzer()─┐
│                 0 │
└───────────────────┘
```

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

導入バージョン: v26.5.0

ClickHouse SQLのクエリ文字列を解析し、構文ハイライト用の範囲の配列を返します。
各範囲は、開始位置 (バイト単位) 、終了位置、ハイライトの種類を含む名前付きタプルです。
ハイライトの種類は、その部分の構文上の役割 (キーワード、識別子、関数など) を表し、
UIで色を割り当てるために使用できます。LIKE および REGEXP の文字列パターン内では、メタ文字
とエスケープ文字は個別にハイライトされます。

**構文**

```sql theme={null}
highlightQuery(query)
```

**引数**

* `query` — ClickHouse SQLのクエリ文字列。String。

**戻り値**

ハイライトされた範囲を表す、名前付きタプル `(begin UInt64, end UInt64, type Enum8(...))` の配列。[`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/ja/reference/data-types/array)

**例**

**シンプル**

```sql title=Query theme={null}
SELECT highlightQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'keyword'),(7,8,'number')]
```

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

導入バージョン: v20.5.0

この関数が実行されたホスト名を返します。
関数がリモートサーバー上で実行される場合 (分散処理) 、そのリモートサーバー名が返されます。
関数が分散テーブルのコンテキストで実行される場合は、各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を返します。

**構文**

```sql theme={null}
hostName()
```

**別名**: `hostname`

**引数**

* ありません。

**戻り値**

ホスト名を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT hostName()
```

```response title=Response theme={null}
┌─hostName()─┐
│ clickhouse │
└────────────┘
```

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

導入バージョン: v25.5.0

[iceberg bucket transform](https://iceberg.apache.org/spec/#bucket-transform-details.)のロジックを実装しています。

**構文**

```sql theme={null}
icebergBucket(N, value)
```

**引数**

* `N` — バケット数 (法) 。[`const (U)Int*`](/ja/reference/data-types/int-uint)
* `value` — 変換元の値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Bool`](/ja/reference/data-types/boolean) または [`Decimal`](/ja/reference/data-types/decimal) または [`Float*`](/ja/reference/data-types/float) または [`String`](/ja/reference/data-types/string) または [`FixedString`](/ja/reference/data-types/fixedstring) または [`UUID`](/ja/reference/data-types/uuid) または [`Date`](/ja/reference/data-types/date) または [`Time`](/ja/reference/data-types/time) または [`DateTime`](/ja/reference/data-types/datetime)

**戻り値**

変換元の値の 32 ビットハッシュを返します。[`Int32`](/ja/reference/data-types/int-uint)

**例**

**例**

```sql title=Query theme={null}
SELECT icebergBucket(5, 1.0 :: Float32)
```

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

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

導入バージョン: v25.3.0

Iceberg の truncate transform のロジックを実装しています: [https://iceberg.apache.org/spec/#truncate-transform-details](https://iceberg.apache.org/spec/#truncate-transform-details).

**構文**

```sql theme={null}
icebergTruncate(N, value)
```

**引数**

* `value` — 変換対象の値。[`String`](/ja/reference/data-types/string) または [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

引数と同じ型

**例**

**例**

```sql title=Query theme={null}
SELECT icebergTruncate(3, 'iceberg')
```

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

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

導入バージョン: v1.1.0

この関数は、渡された引数をそのまま返します。デバッグやテストに便利です。これを使うと、索引の使用を回避して、代わりにフルスキャンのパフォーマンスを確認できます。クエリアナライザは、使用する索引を探す際に `identity` 関数内の内容をすべて無視し、定数畳み込みも無効にします。

**構文**

```sql theme={null}
identity(x)
```

**引数**

* `x` — 入力値。[`Any`](/ja/reference/data-types/index)

**戻り値**

入力値をそのまま返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
SELECT identity(42)
```

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

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

導入バージョン: v1.1.0

任意の引数を受け取り、常に `0` を返します。

**構文**

```sql theme={null}
ignore(x)
```

**引数**

* `x` — 構文エラーを回避するためだけに渡され、実際には使用されない入力値です。[`Any`](/ja/reference/data-types/index)

**戻り値**

常に `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT ignore(0, 'ClickHouse', NULL)
```

```response title=Response theme={null}
┌─ignore(0, 'ClickHouse', NULL)─┐
│                             0 │
└───────────────────────────────┘
```

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

導入バージョン: v1.1.0

この関数は、デバッグと内部診断を目的としています。
引数は無視され、常に 1 を返します。
引数は評価されません。

索引解析では、この関数の引数は `indexHint` でラップされていないものとして扱われます。
これにより、対応する条件に基づいて索引範囲内のデータを選択できますが、その条件による追加の絞り込みは行われません。
ClickHouse の索引はスパースであるため、`indexHint` を使用すると、同じ条件を直接指定した場合よりも多くのデータが返されます。

<Accordion title="説明">
  次を実行すると:

  ```sql theme={null}
  SELECT * FROM test WHERE key = 123;
  ```

  ClickHouse は次の 2 つを行います:

  1. 索引を使って、`key = 123` を含む可能性のあるグラニュール (約 8192 行のブロック) を見つける
  2. それらのグラニュールを読み取り、`key = 123` の行だけを返すように行ごとにフィルタする

  そのため、ディスクから 8,192 行を読み取っても、実際に一致する 1 行だけが返されます。

  一方、`indexHint` を使って次を実行すると:

  ```sql theme={null}
  SELECT * FROM test WHERE indexHint(key = 123);
  ```

  ClickHouse が行うのは 1 つだけです:

  1. 索引を使って key = 123 を含む可能性のあるグラニュールを見つけ、それらのグラニュールから **フィルタせずに** すべての行を返す

  `key = 456` や `key = 789` などの行も含め、8,192 行すべてが返されます。 (同じグラニュールにたまたま格納されていたものがすべて返されます。)
  `indexHint()` はパフォーマンスのためのものではありません。これは、ClickHouse の索引がどのように機能するかをデバッグし、理解するためのものです:

  * 自分の条件はどのグラニュールを選択しているか
  * それらのグラニュールには何行あるか
  * 自分の索引は効果的に使われているか
</Accordion>

注: `indexHint` 関数を使ってクエリを最適化することはできません。`indexHint` 関数はクエリ解析に追加情報を与えないため、クエリを最適化しません。`indexHint` 関数の中に式を入れても、`indexHint` 関数を使わない場合と比べて何ら有利ではありません。`indexHint` 関数は内部診断とデバッグの目的でのみ使用でき、パフォーマンスを改善するものではありません。ClickHouse のコントリビューター以外が `indexHint` を使っているのを見かけた場合、それはおそらく誤りなので削除すべきです。

**構文**

```sql theme={null}
indexHint(expression)
```

**引数**

* `expression` — 索引範囲の選択に使用する任意の式。[`式`](/ja/reference/data-types/special-data-types/expression)

**戻り値**

常に `1` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**日付でフィルタリングする使用例**

```sql title=Query theme={null}
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
```

```response title=Response theme={null}
┌──────────k─┬─count()─┐
│ 2025-09-14 │    7071 │
│ 2025-09-15 │   16428 │
│ 2025-09-16 │    1077 │
│ 2025-09-30 │    8167 │
└────────────┴─────────┘
```

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

導入バージョン: v1.1.0

現在の初期クエリの ID を返します。
クエリのその他のパラメータは、[`system.query_log`](/ja/reference/system-tables/query_log) の `initial_query_id` フィールドから取得できます。

[`queryID`](/ja/reference/functions/regular-functions/other-functions#queryID) 関数とは異なり、`initialQueryID` は異なる分片でも同じ結果を返します。

**構文**

```sql theme={null}
initialQueryID()
```

**別名**: `initial_query_id`

**引数**

* なし。

**戻り値**

現在のクエリの元となる初期クエリの ID を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

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

導入バージョン: v25.4.0

初期クエリの開始時刻を返します。
`initialQueryStartTime` は、異なる分片でも同じ結果を返します。

**構文**

```sql theme={null}
initialQueryStartTime()
```

**別名**: `initial_query_start_time`

**引数**

* なし。

**戻り値**

現在の初期クエリの開始時刻を返します。[`DateTime`](/ja/reference/data-types/datetime)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryStartTime() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

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

導入バージョン: v20.6.0

単一の値に基づいて、集約関数の結果を計算します。
この関数は、[-State](/ja/reference/functions/aggregate-functions/combinators#-state) コンビネータを持つ集約関数を初期化するために使用できます。
集約関数の状態を作成して、それを [`AggregateFunction`](/ja/reference/data-types/aggregatefunction) 型のカラムに挿入したり、初期化された集約をデフォルト値として使用したりできます。

**Syntax**

```sql theme={null}
initializeAggregation(aggregate_function, arg1[, arg2, ...])
```

**引数**

* `aggregate_function` — 初期化する集約関数の名前。 [`String`](/ja/reference/data-types/string)
* `arg1[, arg2, ...]` — 集約関数の引数。 [`Any`](/ja/reference/data-types/index)

**戻り値**

関数に渡された各行について、集約結果を返します。戻り値の型は、`initializeAggregation` の第1引数として指定する関数の戻り値の型と同じです。 [`Any`](/ja/reference/data-types/index)

**例**

**uniqState を使った基本的な使い方**

```sql title=Query theme={null}
SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));
```

```response title=Response theme={null}
┌─uniqMerge(state)─┐
│                3 │
└──────────────────┘
```

**sumState と finalizeAggregation の使用**

```sql title=Query theme={null}
SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));
```

```response title=Response theme={null}
┌─finalizeAggregation(state)─┬─toTypeName(state)─────────────┐
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
│                          2 │ AggregateFunction(sum, UInt8) │
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
└────────────────────────────┴───────────────────────────────┘
```

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

導入バージョン: v20.3.0

引数が定数式であるかどうかを返します。
定数式とは、その結果がクエリ分析中、つまり実行前に確定している式です。
たとえば、[リテラル](/ja/reference/syntax#literals)からなる式は定数式です。
この関数は主に、開発、デバッグ、デモンストレーションを目的としています。

**構文**

```sql theme={null}
isConstant(x)
```

**引数**

* `x` — 確認する式。[`Any`](/ja/reference/data-types/index)

**戻り値**

`x` が定数であれば `1`、定数でなければ `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**定数式**

```sql title=Query theme={null}
SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)
```

```response title=Response theme={null}
┌─isConstant(plus(x, 1))─┐
│                      1 │
└────────────────────────┘
```

**関数を伴う定数**

```sql title=Query theme={null}
WITH 3.14 AS pi
SELECT isConstant(cos(pi))
```

```response title=Response theme={null}
┌─isConstant(cos(pi))─┐
│                   1 │
└─────────────────────┘
```

**非定数式**

```sql title=Query theme={null}
SELECT isConstant(number)
FROM numbers(1)
```

```response title=Response theme={null}
┌─isConstant(number)─┐
│                  0 │
└────────────────────┘
```

**now() 関数の動作**

```sql title=Query theme={null}
SELECT isConstant(now())
```

```response title=Response theme={null}
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘
```

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

導入バージョン: v20.8.0

10進数が、指定された精度の Decimal データ型に収まるには桁数が多すぎるかどうかを判定します。

**構文**

```sql theme={null}
isDecimalOverflow(value[, precision])
```

**引数**

* `value` — チェック対象の Decimal 値。[`Decimal`](/ja/reference/data-types/decimal)
* `precision` — 任意。Decimal 型の精度です。省略した場合は、最初の引数の元の精度が使用されます。[`UInt8`](/ja/reference/data-types/int-uint)

**戻り値**

Decimal 値の桁数がその精度で許容される桁数を超えている場合は `1`、指定された精度を満たしている場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT isDecimalOverflow(toDecimal32(1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(1000000000, 0)),
       isDecimalOverflow(toDecimal32(-1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(-1000000000, 0));
```

```response title=Response theme={null}
┌─isDecimalOverflow(toDecimal32(1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(1000000000, 0))─┬─isDecimalOverflow(toDecimal32(-1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(-1000000000, 0))─┐
│                                                1 │                                             1 │                                                 1 │                                              1 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘
```

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

導入バージョン: v18.16.0

Dictionary と同様に、テーブルからデータを取得できます。
指定した結合キーを使って Join テーブルからデータを取得します。

<Note>
  `ENGINE = Join(ANY, LEFT, <join_keys>)` [ステートメント](/ja/reference/engines/table-engines/special/join) で作成されたテーブルのみサポートしています。
</Note>

**構文**

```sql theme={null}
joinGet(join_storage_table_name, value_column, join_keys)
```

**引数**

* `join_storage_table_name` — 検索対象を示す識別子です。この識別子はデフォルトデータベース内で検索されます (設定ファイルのパラメータ `default_database` を参照) 。デフォルトデータベースを変更するには、`USE database_name` クエリを使用するか、`database_name.table_name` のようにデータベース名とテーブル名をドットで指定します。[`String`](/ja/reference/data-types/string)
* `value_column` — 必要なデータを含むtableのカラム名です。[`const String`](/ja/reference/data-types/string)
* `join_keys` — 結合キーのリストです。[`Any`](/ja/reference/data-types/index)

**戻り値**

キーのリストに対応する値のリストを返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGet(db_test.id_val, 'val', toUInt32(1));
```

```response title=Response theme={null}
┌─joinGet(db_test.id_val, 'val', toUInt32(1))─┐
│                                          11 │
└─────────────────────────────────────────────┘
```

**現在のデータベース内のテーブルを使用する場合**

```sql title=Query theme={null}
USE db_test;
SELECT joinGet(id_val, 'val', toUInt32(2));
```

```response title=Response theme={null}
┌─joinGet(id_val, 'val', toUInt32(2))─┐
│                                  12 │
└─────────────────────────────────────┘
```

**結合キーとしてArrayを使用する**

```sql title=Query theme={null}
CREATE TABLE some_table (id1 UInt32, id2 UInt32, name String) ENGINE = Join(ANY, LEFT, id1, id2);
INSERT INTO some_table VALUES (1, 11, 'a') (2, 12, 'b') (3, 13, 'c');

SELECT joinGet(some_table, 'name', 1, 11);
```

```response title=Response theme={null}
┌─joinGet(some_table, 'name', 1, 11)─┐
│ a                                  │
└────────────────────────────────────┘
```

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

導入バージョン: v20.4.0

Dictionary と同様の方法で、テーブルからデータを取得できます。
指定した結合キーを使用して Join テーブルからデータを取得します。
[`joinGet`](#joinGet) とは異なり、キーが存在しない場合は `NULL` を返します。

<Note>
  `ENGINE = Join(ANY, LEFT, <join_keys>)` [ステートメント](/ja/reference/engines/table-engines/special/join) で作成されたテーブルのみサポートします。
</Note>

**構文**

```sql theme={null}
joinGetOrNull(join_storage_table_name, value_column, join_keys)
```

**引数**

* `join_storage_table_name` — 検索を実行する場所を指定する識別子です。この識別子はデフォルトデータベース内で検索されます (設定ファイルの default\_database パラメータを参照) 。デフォルトデータベースを変更するには、`USE database_name` クエリを使用するか、`database_name.table_name` のようにドット区切りでデータベース名とテーブル名を指定します。[`String`](/ja/reference/data-types/string)
* `value_column` — 必要なデータを含むテーブルのカラム名です。[`const String`](/ja/reference/data-types/string)
* `join_keys` — 結合キーのリストです。[`Any`](/ja/reference/data-types/index)

**戻り値**

キーのリストに対応する値のリストを返します。キーが見つからない場合は `NULL` を返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGetOrNull(db_test.id_val, 'val', toUInt32(1)), joinGetOrNull(db_test.id_val, 'val', toUInt32(999));
```

```response title=Response theme={null}
┌─joinGetOrNull(db_test.id_val, 'val', toUInt32(1))─┬─joinGetOrNull(db_test.id_val, 'val', toUInt32(999))─┐
│                                                11 │                                                ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘
```

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

導入バージョン: v18.12.0

[LowCardinality](/ja/reference/data-types/lowcardinality) カラムの辞書内での値の位置を返します。位置は 1 から始まります。LowCardinality ではパーツごとに辞書が作成されるため、この関数はパーツが異なると同じ値に対しても異なる位置を返す場合があります。

**構文**

```sql theme={null}
lowCardinalityIndices(col)
```

**引数**

* `col` — 低カーディナリティのカラム。[`LowCardinality`](/ja/reference/data-types/lowcardinality)

**戻り値**

現在のパートの Dictionary 内における値の位置。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- 2つのパーツを作成する:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityIndices(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityIndices(s)─┐
│ ab │                        1 │
│ cd │                        2 │
│ ab │                        1 │
│ ab │                        1 │
│ df │                        3 │
└────┴──────────────────────────┘
┌─s──┬─lowCardinalityIndices(s)─┐
│ ef │                        1 │
│ cd │                        2 │
│ ab │                        3 │
│ cd │                        2 │
│ ef │                        1 │
└────┴──────────────────────────┘
```

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

導入バージョン: v18.12.0

[LowCardinality](/ja/reference/data-types/lowcardinality) カラムの辞書値を返します。
ブロックが辞書サイズより小さい、または大きい場合、結果は切り詰められるか、デフォルト値で拡張されます。
LowCardinality はパーツごとに辞書を持つため、この関数はパーツによって異なる辞書値を返す場合があります。

**構文**

```sql theme={null}
lowCardinalityKeys(col)
```

**引数**

* `col` — 低カーディナリティのカラムです。[`LowCardinality`](/ja/reference/data-types/lowcardinality)

**戻り値**

辞書キーを返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**lowCardinalityKeys**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- 2つのパーツを作成する:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityKeys(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityKeys(s)─┐
│ ef │                       │
│ cd │ ef                    │
│ ab │ cd                    │
│ cd │ ab                    │
│ ef │                       │
└────┴───────────────────────┘
┌─s──┬─lowCardinalityKeys(s)─┐
│ ab │                       │
│ cd │ ab                    │
│ ab │ cd                    │
│ ab │ df                    │
│ df │                       │
└────┴───────────────────────┘
```

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

導入バージョン: v1.1.0

定数を、単一の値を含むフルカラムに変換します。
フルカラムと定数は、メモリ内では異なる形で表現されます。
関数は通常、通常の引数と定数引数に対して異なるコードを実行しますが、結果は一般に同じになるはずです。
この関数は、この動作をデバッグするために使用できます。

**構文**

```sql theme={null}
materialize(x)
```

**引数**

* `x` — 定数。[`Any`](/ja/reference/data-types/index)

**戻り値**

定数値を含む通常のカラムを返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
-- In the example below the `countMatches` function expects a constant second argument.
-- This behaviour can be debugged by using the `materialize` function to turn a constant into a full column,
-- verifying that the function throws an error for a non-constant argument.

SELECT countMatches('foobarfoo', 'foo');
SELECT countMatches('foobarfoo', materialize('foo'));
```

```response title=Response theme={null}
2
Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type of argument #2 'pattern' of function countMatches, expected constant String, got String
```

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

導入バージョン: v23.10.0

2 つのサンプルにおける連続値メトリクスの平均を比較する A/B テストに必要な最小サンプルサイズを計算します。

[この記事](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a)で説明されている式を使用します。
介入群と対照群のサイズが等しいことを前提としています。
1 グループあたりに必要なサンプルサイズを返します (つまり、実験全体で必要なサンプルサイズは戻り値の 2 倍です) 。
また、テスト対象メトリクスの分散が介入群と対照群で等しいことも前提としています。

**構文**

```sql theme={null}
minSampleSizeContinuous(baseline, sigma, mde, power, alpha)
```

**別名**: `minSampleSizeContinous`

**引数**

* `baseline` — メトリックのベースライン値。 [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float)
* `sigma` — メトリックのベースライン標準偏差。 [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float)
* `mde` — ベースライン値に対する割合としての最小検出効果 (MDE)  (例: ベースライン値が 112.25 の場合、MDE が 0.03 であれば、112.25 ± 112.25\*0.03 への変化を想定します) 。 [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float)
* `power` — テストに必要な統計的検出力 (1 - 第 II 種過誤の確率) 。 [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float)
* `alpha` — テストに必要な有意水準 (第 I 種過誤の確率) 。 [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float)

**戻り値**

3 つの要素 `minimum_sample_size`、`detect_range_lower`、`detect_range_upper` を持つ名前付き Tuple を返します。これらはそれぞれ、必要なサンプルサイズ、返される必要サンプルサイズでは検出できない値の範囲の下限 (`baseline * (1 - mde)` として計算) 、および返される必要サンプルサイズでは検出できない値の範囲の上限 (`baseline * (1 + mde)` として計算) です (Float64) 。 [`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)

**例**

**minSampleSizeContinuous**

```sql title=Query theme={null}
SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(616.2931945826209,108.8825,115.6175)
```

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

導入バージョン: v22.6.0

2 つのサンプルにおけるコンバージョン率 (比率) を比較する A/B テストで、必要な最小サンプルサイズを計算します。

[この記事](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a)で説明されている式を使用します。介入群と対照群のサイズが等しいことを前提としています。戻り値は一方のグループに必要なサンプルサイズです (つまり、実験全体に必要なサンプルサイズはこの戻り値の 2 倍です) 。

**構文**

```sql theme={null}
minSampleSizeConversion(baseline, mde, power, alpha)
```

**引数**

* `baseline` — ベースラインのコンバージョン率。[`Float*`](/ja/reference/data-types/float)
* `mde` — パーセンテージポイントで表した最小検出可能効果 (MDE) 。 (例: ベースラインのコンバージョン率が 0.25 の場合、MDE が 0.03 であれば、0.25 ± 0.03 への変化を想定します。) [`Float*`](/ja/reference/data-types/float)
* `power` — テストで必要な統計的検出力 (1 - 第 II 種過誤の確率) 。[`Float*`](/ja/reference/data-types/float)
* `alpha` — テストで必要な有意水準 (第 I 種過誤の確率) 。[`Float*`](/ja/reference/data-types/float)

**戻り値**

3 つの要素 `minimum_sample_size`、`detect_range_lower`、`detect_range_upper` を持つ名前付きTupleを返します。これらはそれぞれ、必要なサンプルサイズ、返される必要サンプルサイズでは検出できない値の範囲の下限 (`baseline - mde` として計算) 、返される必要サンプルサイズでは検出できない値の範囲の上限 (`baseline + mde` として計算) を表します。[`Tuple(Float64, Float64, Float64)`](/ja/reference/data-types/tuple)

**例**

**minSampleSizeConversion**

```sql title=Query theme={null}
SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(3396.077603219163,0.22,0.28)
```

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

導入バージョン: v20.1.0

現在の行から指定したオフセット位置にあるカラムの値を返します。
この関数は非推奨です。`data block` の物理的な順序に基づいて動作するため、ユーザーが想定する論理的な順序と一致しない可能性があり、エラーを引き起こしやすくなっています。
代わりに、適切なウィンドウ関数の使用を検討してください。

この関数は、`allow_deprecated_error_prone_window_functions = 1` を設定することで有効にできます。

**構文**

```sql theme={null}
neighbor(column, offset[, default_value])
```

**引数**

* `column` — 対象のカラム。[`Any`](/ja/reference/data-types/index)
* `offset` — 現在の行からのオフセット。正の値は後方を、負の値は前方を参照します。[`Integer`](/ja/reference/data-types/int-uint)
* `default_value` — 任意。オフセットがデータ範囲外になった場合に返す値です。指定しない場合は、カラム型のデフォルト値が使用されます。[`Any`](/ja/reference/data-types/index)

**戻り値**

指定したオフセット位置の値を返します。範囲外の場合はデフォルト値を返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
SELECT number, neighbor(number, 2) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─number─┬─neighbor(number, 2)─┐
│      0 │                   2 │
│      1 │                   3 │
│      2 │                   4 │
│      3 │                   5 │
│      4 │                   6 │
│      5 │                   7 │
│      6 │                   8 │
│      7 │                   9 │
│      8 │                   0 │
│      9 │                   0 │
└────────┴─────────────────────┘
```

**デフォルト値あり**

```sql title=Query theme={null}
SELECT number, neighbor(number, 2, 999) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─number─┬─neighbor(number, 2, 999)─┐
│      0 │                        2 │
│      1 │                        3 │
│      2 │                        4 │
│      3 │                        5 │
│      4 │                        6 │
│      5 │                        7 │
│      6 │                        8 │
│      7 │                        9 │
│      8 │                      999 │
│      9 │                      999 │
└────────┴──────────────────────────┘
```

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

導入バージョン: v20.8.0

リテラル、リテラルの並び、および複雑な別名 (空白を含むもの、3 桁以上の数字を含むもの、または UUID のように 36 バイト以上の長さを持つもの) をプレースホルダー `?` に置き換えます。

**構文**

```sql theme={null}
normalizeQuery(x)
```

**引数**

* `x` — 文字列。[`String`](/ja/reference/data-types/string)

**戻り値**

プレースホルダーに置き換えた指定の文字列を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT normalizeQuery('[1, 2, 3, x]') AS query
```

```response title=Response theme={null}
┌─query────┐
│ [?.., x] │
└──────────┘
```

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

導入バージョン: v21.2.0

リテラルおよびリテラルの並びをプレースホルダー `?` に置き換えますが、複雑な別名 (空白を含むもの、3 桁以上の数字を含むもの、または UUID などのように 36 バイト以上の長さを持つもの) は置き換えません。
これにより、複雑なクエリログをより適切に分析しやすくなります。

**構文**

```sql theme={null}
normalizeQueryKeepNames(x)
```

**引数**

* `x` — 文字列。[`String`](/ja/reference/data-types/string)

**戻り値**

指定された文字列をプレースホルダー付きで返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')
```

```response title=Response theme={null}
┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐
│ SELECT ? AS `?`                               │ SELECT ? AS aComplexName123                            │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
```

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

導入バージョン: v20.8.0

類似したクエリに対して、リテラル値を除外した同一の64ビットハッシュ値を返します。
クエリログの分析に役立ちます。

**構文**

```sql theme={null}
normalizedQueryHash(x)
```

**引数**

* `x` — 文字列。[`String`](/ja/reference/data-types/string)

**戻り値**

64ビットのハッシュ値を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

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

導入バージョン: v21.2.0

[`normalizedQueryHash`](#normalizedQueryHash) と同様に、類似したクエリに対してはリテラル値を除いた同一の64ビットのハッシュ値を返しますが、ハッシュ化の前に複雑な別名 (空白を含む、3桁以上の数字を含む、または UUID のように36バイト以上の長さがあるもの) をプレースホルダーに置き換えることはありません。
クエリログの分析に役立ちます。

**構文**

```sql theme={null}
normalizedQueryHashKeepNames(x)
```

**引数**

* `x` — 文字列。[`String`](/ja/reference/data-types/string)

**戻り値**

64 ビットのハッシュ値を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz123`') != normalizedQueryHash('SELECT 1 AS `abc123`') AS normalizedQueryHash;
SELECT normalizedQueryHashKeepNames('SELECT 1 AS `xyz123`') != normalizedQueryHashKeepNames('SELECT 1 AS `abc123`') AS normalizedQueryHashKeepNames;
```

```response title=Response theme={null}
┌─normalizedQueryHash─┐
│                   0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│                            1 │
└──────────────────────────────┘
```

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

導入バージョン: v26.4.0

識別子をランダムな単語に、リテラルをランダムな値に置き換えつつ、クエリ構造を維持したまま SQL クエリを難読化します。

この関数は、デバッグ目的でクエリをログに記録したり共有したりする前に、クエリを匿名化するのに役立ちます。
同じ入力クエリであっても、行が異なれば異なる難読化結果が生成されるため、
複数のクエリを扱う際のプライバシー保護に役立ちます。

オプションの `tag` パラメータは、同じ関数呼び出しが
1 つのクエリ内で複数回使われる場合に、共通部分式除去を防ぎます。これにより、呼び出しごとに異なる難読化結果が生成されます。

特長:

* テーブル名、カラム名、別名をランダムな単語に置き換えます
* 数値リテラルと文字列リテラルをランダムな値に置き換えます
* クエリ全体の構造と SQL 構文を保持します
* 行ごとに異なる結果を生成します

**構文**

```sql theme={null}
obfuscateQuery(query[, tag])
```

**引数**

* `query` — 難読化する SQL クエリ。[`String`](/ja/reference/data-types/string)
* `tag` — 任意。同じ関数呼び出しが複数回使用される場合に、共通部分式除去を防ぐための値です。

**戻り値**

識別子とリテラルを置き換えつつ、元のクエリ構造を保持した難読化済みクエリ。[`String`](/ja/reference/data-types/string)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT name, age FROM users WHERE age > 30')
```

```response title=Response theme={null}
SELECT fruit, number FROM table WHERE number > 12
```

**共通部分式除去を防ぐためのタグ付き**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT * FROM t', 1), obfuscateQuery('SELECT * FROM t', 2)
```

```response title=Response theme={null}
SELECT a FROM b, SELECT c FROM d
```

**行が異なると結果も異なります**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS b
```

```response title=Response theme={null}
A B
```

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

導入バージョン: v26.4.0

指定した seed を使って SQL クエリを難読化し、決定論的な結果を得られます。

`obfuscateQuery()` とは異なり、この関数は同じ seed を指定すると常に同じ結果を返します。
そのため、複数回の実行にわたって一貫した難読化が必要な場合や、
テストやデバッグのために同じ難読化済みクエリを再現したい場合に役立ちます。

特徴:

* 指定した seed に基づく決定論的な難読化
* 同じ seed からは常に同じ難読化結果を生成
* 異なる seed からは異なる結果を生成
* `obfuscateQuery()` と同様にクエリの構造を保持

使用例:

* 再現可能なテストケース
* 複数回の実行で一貫した匿名化
* 一貫した難読化済みクエリを用いたデバッグ

**構文**

```sql theme={null}
obfuscateQueryWithSeed(query, seed)
```

**引数**

* `query` — 難読化する SQL クエリ。 [`String`](/ja/reference/data-types/string)
* `seed` — 難読化に使用するシード。同じシードを指定すると、決定論的な結果が生成されます。 [`Integer`](/ja/reference/data-types/int-uint) または [`String`](/ja/reference/data-types/string)

**戻り値**

指定したシードに基づいて決定論的に生成された、難読化済みのクエリ。 [`String`](/ja/reference/data-types/string)

**例**

**整数シードを使用した決定論的な難読化**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)
```

```response title=Response theme={null}
SELECT fruit FROM table
```

**文字列シードによる決定論的な難読化**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')
```

```response title=Response theme={null}
SELECT a, b FROM c
```

**同じシードなら同じ結果になる**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)
```

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

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

導入バージョン: v24.6.0

バイトサイズを表す文字列と、その単位として `B`、`KiB`、`KB`、`MiB`、`MB` など (つまり [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) または 10 進バイト単位) が与えられると、この関数は対応するバイト数を返します。
この関数が入力値を解析できない場合は、例外をスローします。

この関数の逆演算は [`formatReadableSize`](#formatReadableSize) と [`formatReadableDecimalSize`](#formatReadableDecimalSize) です。

**構文**

```sql theme={null}
parseReadableSize(x)
```

**引数**

* `x` — ISO/IEC 80000-13 または 10 進のバイト単位を使用した、読みやすいサイズ表記。[`String`](/ja/reference/data-types/string)

**戻り値**

最も近い整数に切り上げられたバイト数を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
└────────────────┴─────────┘
```

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

導入バージョン: v24.6.0

バイトサイズを表す文字列と、その単位として `B`、`KiB`、`KB`、`MiB`、`MB` など (つまり [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) または10進のバイト単位) を受け取り、対応するバイト数を返します。
入力値を解析できない場合、この関数は `NULL` を返します。

この関数の逆演算は [`formatReadableSize`](#formatReadableSize) と [`formatReadableDecimalSize`](#formatReadableDecimalSize) です。

**構文**

```sql theme={null}
parseReadableSizeOrNull(x)
```

**引数**

* `x` — ISO/IEC 80000-13 または 10 進バイト単位で表された、人が読みやすい形式のサイズ。[`String`](/ja/reference/data-types/string)

**戻り値**

バイト数を返します。最も近い整数に切り上げられ、入力を解析できない場合は `NULL` を返します。[`Nullable(UInt64)`](/ja/reference/data-types/nullable)

**例**

**使用例**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │    ᴺᵁᴸᴸ │
└────────────────┴─────────┘
```

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

導入バージョン: v24.6.0

バイトサイズを表す文字列を受け取り、単位として `B`、`KiB`、`KB`、`MiB`、`MB` など (つまり [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) または 10 進バイト単位) を含む場合、この関数は対応するバイト数を返します。
この関数が入力値を解析できない場合は、`0` を返します。

この関数の逆関数にあたるのは [`formatReadableSize`](#formatReadableSize) と [`formatReadableDecimalSize`](#formatReadableDecimalSize) です。

**構文**

```sql theme={null}
parseReadableSizeOrZero(x)
```

**引数**

* `x` — ISO/IEC 80000-13 または 10 進のバイト単位による、人間が読みやすいサイズ。[`String`](/ja/reference/data-types/string)

**戻り値**

最も近い整数に切り上げたバイト数を返します。入力をパースできない場合は `0` を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │       0 │
└────────────────┴─────────┘
```

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

導入バージョン: v22.7.0

数値の並びの後に時間単位に類する文字列が続く値を解析します。

time delta 文字列では、次の時間単位指定を使用できます。

* `years`, `year`, `yr`, `y`
* `months`, `month`, `mo`
* `weeks`, `week`, `w`
* `days`, `day`, `d`
* `hours`, `hour`, `hr`, `h`
* `minutes`, `minute`, `min`, `m`
* `seconds`, `second`, `sec`, `s`
* `milliseconds`, `millisecond`, `millisec`, `ms`
* `microseconds`, `microsecond`, `microsec`, `μs`, `µs`, `us`
* `nanoseconds`, `nanosecond`, `nanosec`, `ns`

複数の時間単位は、区切り文字 (空白、`;`、`-`、`+`、`,`、`:`) を使って組み合わせることができます。

年と月の長さは概算です。1 年は 365 日、1 か月は 30.5 日として扱います。

**構文**

```sql theme={null}
parseTimeDelta(timestr)
```

**引数**

* `timestr` — 数字の並びに、時間の単位を表す文字列が続く値。[`String`](/ja/reference/data-types/string)

**戻り値**

秒数を表す値。[`Float64`](/ja/reference/data-types/float)

**例**

**使用例**

```sql title=Query theme={null}
SELECT parseTimeDelta('11s+22min')
```

```response title=Response theme={null}
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘
```

**複合時間単位**

```sql title=Query theme={null}
SELECT parseTimeDelta('1yr2mo')
```

```response title=Response theme={null}
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘
```

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

導入バージョン: v21.4.0

[パーティション ID](/ja/reference/engines/table-engines/mergetree-family/custom-partitioning-key)を計算します。

<Note>
  この関数は低速なため、大量の行に対しては呼び出さないでください。
</Note>

**構文**

```sql theme={null}
partitionId(column1[, column2, ...])
```

**別名**: `partitionID`

**引数**

* `column1, column2, ...` — パーティション ID を返す対象となるカラム。

**戻り値**

その行が属するパーティション ID を返します。 [`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
DROP TABLE IF EXISTS tab;

CREATE TABLE tab
(
  i int,
  j int
)
ENGINE = MergeTree
PARTITION BY i
ORDER BY tuple();

INSERT INTO tab VALUES (1, 1), (1, 2), (1, 3), (2, 4), (2, 5), (2, 6);

SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;
```

```response title=Response theme={null}
┌─i─┬─j─┬─partitionId(i)─┬─_partition_id─┐
│ 1 │ 1 │ 1              │ 1             │
│ 1 │ 2 │ 1              │ 1             │
│ 1 │ 3 │ 1              │ 1             │
│ 2 │ 4 │ 2              │ 2             │
│ 2 │ 5 │ 2              │ 2             │
│ 2 │ 6 │ 2              │ 2             │
└───┴───┴────────────────┴───────────────┘
```

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

導入バージョン: v21.9.0

現在のクエリの ID を返します。
クエリの他のパラメータは、[`system.query_log`](/ja/reference/system-tables/query_log) テーブルの `query_id` フィールドから取得できます。

[`initialQueryID`](#initialQueryID) 関数とは異なり、`queryID` は分片ごとに異なる結果を返す場合があります。

**構文**

```sql theme={null}
queryID()
```

**別名**: `query_id`

**引数**

* なし。

**戻り値**

現在のクエリIDを返します。 [`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT queryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 3 │
└───────────────────┘
```

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

導入バージョン: v22.7.0

現在の ClickHouse server のリビジョン番号を返します。

**構文**

```sql theme={null}
revision()
```

**引数**

* なし。

**戻り値**

現在のClickHouseサーバーのリビジョンを返します。[`UInt32`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT revision()
```

```response title=Response theme={null}
┌─revision()─┐
│      54485 │
└────────────┘
```

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

導入バージョン: v1.1.0

処理される各行に対して一意の行番号を返します。

**構文**

```sql theme={null}
rowNumberInAllBlocks()
```

**引数**

* なし。

**戻り値**

データブロック内の行番号を、`0` から始まる序数で返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT rowNumberInAllBlocks()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
)
SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInAllBlocks()─┐
│                      0 │
│                      1 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      4 │
│                      5 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      2 │
│                      3 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      6 │
│                      7 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      8 │
│                      9 │
└────────────────────────┘
```

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

導入バージョン: v1.1.0

`rowNumberInBlock` は、処理対象の各[ブロック](/ja/resources/develop-contribute/introduction/architecture#block)について、現在の行の番号を返します。

返される番号は、各ブロックごとに 0 から始まります。

**構文**

```sql theme={null}
rowNumberInBlock()
```

**引数**

* なし。

**戻り値**

`0` から始まるデータブロック内の行の序数を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT rowNumberInBlock()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
```

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

導入バージョン: v1.1.0

データブロックの各行について、集約関数の状態を累積します。

<Warning>
  **非推奨**

  状態は新しいデータブロックごとにリセットされます。
  この挙動は誤りを招きやすいため、この関数は非推奨となっており、代わりに[ウィンドウ関数](/ja/reference/functions/window-functions/index)を使用することを推奨します。
  この関数の使用を許可するには、設定[`allow_deprecated_error_prone_window_functions`](/ja/reference/settings/session-settings#allow_deprecated_error_prone_window_functions)を使用できます。
</Warning>

**構文**

```sql theme={null}
runningAccumulate(agg_state[, grouping])
```

**引数**

* `agg_state` — 集約関数の状態。[`AggregateFunction`](/ja/reference/data-types/aggregatefunction)
* `grouping` — 任意。グループ化キー。`grouping` の値が変わると、関数の状態はリセットされます。等価演算子が定義されている任意のサポート対象データ型を指定できます。[`Any`](/ja/reference/data-types/index)

**戻り値**

各行の累積結果を返します。[`Any`](/ja/reference/data-types/index)

**例**

**initializeAggregation を使用した使用例**

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

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

導入バージョン: v21.3.0

同時実行されているイベント数を計算します。
各イベントには開始時刻と終了時刻があります。
開始時刻はイベントに含まれますが、終了時刻は含まれません。
開始時刻と終了時刻のカラムは、同じデータ型である必要があります。
この関数は、各イベントの開始時刻ごとに、アクティブな (同時実行中の) イベントの総数を計算します。

<Tip>
  **要件**

  イベントは開始時刻の昇順で並んでいる必要があります。
  この要件に違反すると、関数は例外をスローします。
  各データブロックは個別に処理されます。
  異なるデータブロックに属するイベントが重なっている場合、正しく処理できません。
</Tip>

<Warning>
  **非推奨**

  代わりに [ウィンドウ関数](/ja/reference/functions/window-functions/index) を使用することを推奨します。
</Warning>

**構文**

```sql theme={null}
runningConcurrency(start, end)
```

**引数**

* `start` — イベントの開始時刻を表すカラム。[`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime) または [`DateTime64`](/ja/reference/data-types/datetime64)
* `end` — イベントの終了時刻を表すカラム。[`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime) または [`DateTime64`](/ja/reference/data-types/datetime64)

**戻り値**

各イベントの開始時点で同時に発生しているイベント数を返します。[`UInt32`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT start, runningConcurrency(start, end) FROM example_table;
```

```response title=Response theme={null}
┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │                              1 │
│ 2025-03-06 │                              2 │
│ 2025-03-07 │                              3 │
│ 2025-03-11 │                              2 │
└────────────┴────────────────────────────────┘
```

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

導入バージョン: v1.1.0

データブロック内で連続する2つの行の値の差を計算します。
最初の行には `0` を返し、2 行目以降は直前の行との差を返します。

<Warning>
  **非推奨**

  現在処理中のデータブロック内の差分しか返しません。
  この挙動は誤りを招きやすいため、この関数は非推奨です。
  代わりに [ウィンドウ関数](/ja/reference/functions/window-functions/index) を使用することを推奨します。

  この関数の使用を許可するには、設定 [`allow_deprecated_error_prone_window_functions`](/ja/reference/settings/session-settings#allow_deprecated_error_prone_window_functions) を使用できます。
</Warning>

この関数の結果は、対象となるデータブロックと、そのブロック内でのデータの順序に依存します。
`runningDifference()` の計算時の行の順序は、ユーザーに返される行の順序と異なる場合があります。
これを防ぐには、[`ORDER BY`](/ja/reference/statements/select/order-by) を含むサブクエリを作成し、その外側でこの関数を呼び出します。
ブロックサイズが結果に影響する点に注意してください。
`runningDifference` の内部状態は、新しいブロックごとにリセットされます。

**構文**

```sql theme={null}
runningDifference(x)
```

**引数**

* `x` — 連続する値の差分を計算する対象のカラム。[`Any`](/ja/reference/data-types/index)

**戻り値**

連続する値どうしの差分を返します。最初の行は 0 です。

**例**

**使用例**

```sql title=Query theme={null}
SELECT
    EventID,
    EventTime,
    runningDifference(EventTime) AS delta
FROM
(
    SELECT
        EventID,
        EventTime
    FROM events
    WHERE EventDate = '2025-11-24'
    ORDER BY EventTime ASC
    LIMIT 5
);
```

```response title=Response theme={null}
┌─EventID─┬───────────EventTime─┬─delta─┐
│    1106 │ 2025-11-24 00:00:04 │     0 │
│    1107 │ 2025-11-24 00:00:05 │     1 │
│    1108 │ 2025-11-24 00:00:05 │     0 │
│    1109 │ 2025-11-24 00:00:09 │     4 │
│    1110 │ 2025-11-24 00:00:10 │     1 │
└─────────┴─────────────────────┴───────┘
```

**ブロックサイズの影響の例**

```sql title=Query theme={null}
SELECT
    number,
    runningDifference(number + 1) AS diff
FROM numbers(100000)
WHERE diff != 1;
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
└────────┴──────┘
┌─number─┬─diff─┐
│  65536 │    0 │
└────────┴──────┘
```

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

導入バージョン: v1.1.0

データブロック内で連続する行の値の差を計算しますが、[`runningDifference`](#runningDifference) とは異なり、最初の行については `0` ではなく実際の値を返します。

<Warning>
  **非推奨**

  現在処理中のデータブロック内の差分しか返しません。
  この挙動はエラーを招きやすいため、この関数は非推奨です。
  代わりに [ウィンドウ関数](/ja/reference/functions/window-functions/index) を使用することを推奨します。

  この関数の使用を許可するには、設定 `allow_deprecated_error_prone_window_functions` を使用できます。
</Warning>

**構文**

```sql theme={null}
runningDifferenceStartingWithFirstValue(x)
```

**引数**

* `x` — 連続する値の差分を計算する対象のカラム。[`Any`](/ja/reference/data-types/index)

**戻り値**

連続する値同士の差を返します。先頭の行については、その行の値を返します。[`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
SELECT
    number,
    runningDifferenceStartingWithFirstValue(number) AS diff
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
│      1 │    1 │
│      2 │    1 │
│      3 │    1 │
│      4 │    1 │
└────────┴──────┘
```

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

導入バージョン: v20.1.0

server の初回起動時に生成される、ランダムで一意な UUID (v4) を返します。
この UUID は永続化されるため、2 回目、3 回目以降に server を起動しても、同じ UUID が返されます。

**構文**

```sql theme={null}
serverUUID()
```

**引数**

* なし。

**戻り値**

サーバーのランダムなUUIDを返します。[`UUID`](/ja/reference/data-types/uuid)

**例**

**使用例**

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

```response title=Response theme={null}
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘
```

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

導入バージョン: v21.9.0

分散クエリにおける分片の総数を返します。
クエリが分散されていない場合は、定数値 `0` が返されます。

**構文**

```sql theme={null}
shardCount()
```

**引数**

* なし。

**戻り値**

分片の総数、または `0` を返します。[`UInt32`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
-- shardCount()も示している上記のshardNum()の例を参照してください。
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT shardCount() FROM shard_count_example;
```

```response title=Response theme={null}
┌─shardCount()─┐
│            2 │
│            2 │
└──────────────┘
```

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

導入バージョン: v21.9.0

分散クエリでデータの一部を処理する分片の番号を返します。
番号は `1` から始まります。
クエリが分散クエリでない場合は、定数値 `0` が返されます。

**構文**

```sql theme={null}
shardNum()
```

**引数**

* なし。

**戻り値**

分片の索引、または定数 `0` を返します。[`UInt32`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE shard_num_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT dummy, shardNum(), shardCount() FROM shard_num_example;
```

```response title=Response theme={null}
┌─dummy─┬─shardNum()─┬─shardCount()─┐
│     0 │          1 │            2 │
│     0 │          2 │            2 │
└───────┴────────────┴──────────────┘
```

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

導入バージョン: v22.6.0

設定されている場合は、現在のサーバーの Secure Sockets Layer (SSL) 証明書に関する情報を表示します。
接続の検証に OpenSSL 証明書を使用するように ClickHouse を設定する方法について詳しくは、[TLS の設定](/ja/concepts/features/security/tls/configuring-tls) を参照してください。

**構文**

```sql theme={null}
showCertificate()
```

**引数**

* なし。

**戻り値**

設定された SSL 証明書に関連するキー・バリューのペアを格納したマップを返します。[`Map(String, String)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT showCertificate() FORMAT LineAsString;
```

```response title=Response theme={null}
{'version':'1','serial_number':'2D9071D64530052D48308473922C7ADAFA85D6C5','signature_algo':'sha256WithRSAEncryption','issuer':'/CN=marsnet.local CA','not_before':'May  7 17:01:21 2024 GMT','not_after':'May  7 17:01:21 2025 GMT','subject':'/CN=chnode1','pkey_algo':'rsaEncryption'}
```

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

導入バージョン: v1.1.0

指定した秒数だけクエリの実行を一時停止します。
この関数は主に、テストやデバッグのために使用されます。

`sleep()` 関数は、クエリのパフォーマンスやシステムの応答性に悪影響を及ぼす可能性があるため、通常、本番環境では使用すべきではありません。
ただし、次のような場面では有用です。

1. **テスト**: ClickHouse のテストやベンチマークを行う際に、遅延をシミュレートしたり一時停止を挟んだりして、特定の条件下でシステムがどのように動作するかを観察したい場合があります。
2. **デバッグ**: 特定の時点におけるシステムの状態やクエリの実行状況を確認する必要がある場合は、`sleep()` を使って一時停止を入れることで、関連情報を調査または収集できます。
3. **シミュレーション**: ネットワークレイテンシーや外部システムへの依存関係など、遅延や一時停止が発生する実際の状況をシミュレートしたい場合があります。

<Warning>
  `sleep()` 関数は、ClickHouse システム全体のパフォーマンスや応答性に影響を及ぼすおそれがあるため、本当に必要な場合にのみ慎重に使用することが重要です。
</Warning>

セキュリティ上の理由により、この関数を実行できるのは、デフォルトのユーザープロファイル (`allow_sleep` が有効な場合) のみです。

**構文**

```sql theme={null}
sleep(seconds)
```

**引数**

* `seconds` — クエリの実行を最大 3 秒まで一時停止する秒数です。小数秒を指定するには、浮動小数点値も使用できます。[`const UInt*`](/ja/reference/data-types/int-uint) または [`const Float*`](/ja/reference/data-types/float)

**戻り値**

`0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
-- このクエリは完了するまで2秒間一時停止します。
-- この間、結果は返されず、クエリはハングまたは応答なしの状態に見えます。
SELECT sleep(2);
```

```response title=Response theme={null}
┌─sleep(2)─┐
│        0 │
└──────────┘
1 行 in set. Elapsed: 2.012 sec.
```

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

導入バージョン: v1.1.0

結果セットの各行ごとに、指定した秒数だけクエリの実行を一時停止します。

`sleepEachRow()` 関数は、[`sleep()`](#sleep) 関数と同様に、主にテストやデバッグのために使用されます。
この関数を使うと、各行の処理ごとに遅延や一時停止を発生させることができ、次のような場面で役立ちます。

1. **テスト**: 特定の条件下で ClickHouse の性能をテストまたはベンチマークする際に、`sleepEachRow()` を使って、処理される各行ごとに遅延や一時停止を発生させることができます。
2. **デバッグ**: 処理される各行について、システムの状態やクエリの実行状況を確認する必要がある場合は、`sleepEachRow()` で一時停止を入れることで、関連情報を調査したり収集したりできます。
3. **シミュレーション**: 場合によっては、外部システムやネットワーク遅延を扱うケースのように、処理される各行ごとに遅延や一時停止が発生する実運用に近い状況をシミュレートしたいことがあります。

<Warning>
  `sleep()` 関数と同様に、`sleepEachRow()` は必要な場合にのみ慎重に使用することが重要です。特に大きな結果セットを扱う場合、ClickHouse システム全体の性能や応答性に大きな影響を与える可能性があります。
</Warning>

**構文**

```sql theme={null}
sleepEachRow(seconds)
```

**引数**

* `seconds` — 結果セットの各行に対して、クエリの実行を最大 3 秒まで一時停止する秒数です。小数秒を指定するには浮動小数点値を使用できます。[`const UInt*`](/ja/reference/data-types/int-uint) または [`const Float*`](/ja/reference/data-types/float)

**戻り値**

各行に `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
-- 出力は遅延し、各行の間に0.5秒の停止が入ります。
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
```

```response title=Response theme={null}
┌─number─┬─sleepEachRow(0.5)─┐
│      0 │                 0 │
│      1 │                 0 │
│      2 │                 0 │
│      3 │                 0 │
│      4 │                 0 │
└────────┴───────────────────┘
```

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

導入バージョン: v23.8.0

ClickHouseのテーブル構造をCapnProtoフォーマットのスキーマに変換する関数

**構文**

```sql theme={null}
structureToCapnProtoSchema(table_structure, message)
```

**引数**

* なし。

**戻り値**

**例**

**ランダム**

```sql title=Query theme={null}
SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
```

```response title=Response theme={null}
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}
```

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

導入バージョン: v23.8.0

ClickHouseのテーブル構造をProtobufフォーマットのスキーマに変換します。

この関数は、ClickHouseのテーブル構造定義を受け取り、proto3構文の
Protocol Buffers (Protobuf) スキーマ定義に変換します。これは、データ交換用にClickHouseの
テーブル構造に対応したProtobufスキーマを生成する際に役立ちます。

**構文**

```sql theme={null}
structureToProtobufSchema(structure, message_name)
```

**引数**

* `structure` — 文字列で指定する ClickHouse テーブルの構造定義です (例: 'column1 Type1, column2 Type2') 。[`String`](/ja/reference/data-types/string)
* `message_name` — 生成されるスキーマ内の Protobuf メッセージ型の名前です。[`String`](/ja/reference/data-types/string)

**戻り値**

入力された ClickHouse テーブル構造に対応する、proto3 構文の Protobuf スキーマ定義を返します。[`String`](/ja/reference/data-types/string)

**例**

**ClickHouse テーブル構造を Protobuf スキーマに変換する**

```sql title=Query theme={null}
SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
```

```response title=Response theme={null}
syntax = "proto3";

message MessageName
{
    bytes s = 1;
    uint32 x = 2;
}
```

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

導入バージョン: v20.12.0

サーバーが待ち受けている[ネイティブインターフェイス](/ja/concepts/features/interfaces/tcp)のTCPポート番号を返します。
分散テーブルに対して実行された場合、この関数は各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を返します。

**構文**

```sql theme={null}
tcpPort()
```

**引数**

* ありません。

**戻り値**

TCPポート番号を返します。[`UInt16`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT tcpPort()
```

```response title=Response theme={null}
┌─tcpPort()─┐
│      9000 │
└───────────┘
```

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

導入バージョン: v1.1.0

引数 x が true の場合、例外をスローします。
`error_code` 引数を使用するには、設定パラメータ `allow_custom_error_code_in_throw` を有効にする必要があります。

**構文**

```sql theme={null}
throwIf(x[, message[, error_code]])
```

**引数**

* `x` — 確認する条件。[`Any`](/ja/reference/data-types/index)
* `message` — 任意。カスタムエラーメッセージ。[`const String`](/ja/reference/data-types/string)
* `error_code` — 任意。カスタムエラーコード。[`const Int8/16/32`](/ja/reference/data-types/int-uint)

**戻り値**

条件が `false` の場合は `0` を返し、条件が `true` の場合は例外がスローされます。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
```

```response title=Response theme={null}
↙ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) Received exception from server (version 19.14.1):
Code: 395. DB::Exception: Received from localhost:9000. DB::Exception: Too many.
```

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

導入バージョン: v1.1.0

指定された値のデータ型の内部名を返します。
関数 [`toTypeName`](#toTypeName) とは異なり、返されるデータ型には `Const` や `LowCardinality` などの内部ラッパーのカラムが含まれる場合があります。

**構文**

```sql theme={null}
toColumnTypeName(value)
```

**引数**

* `value` — 内部データ型を返す対象となる値。[`Any`](/ja/reference/data-types/index)

**戻り値**

値を表現するために使用される内部データ型を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
```

```response title=Response theme={null}
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32)                                             │
└───────────────────────────────────────────────────────────┘
```

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

導入バージョン: v1.1.0

渡された引数の型名を返します。
`NULL` が渡された場合、この関数は型 `Nullable(Nothing)` を返します。これは ClickHouse の内部的な `NULL` 表現に対応します。

**構文**

```sql theme={null}
toTypeName(x)
```

**引数**

* `x` — 任意の型の値。[`Any`](/ja/reference/data-types/index)

**戻り値**

入力値の型名を返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT toTypeName(123)
```

```response title=Response theme={null}
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘
```

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

導入バージョン: v26.5.0

ClickHouse SQL のクエリ文字列をトークン化し、トークンの配列を返します。
各トークンは、開始位置 (バイト単位) 、終了位置、およびトークンの型を持つ名前付きタプルです。

**構文**

```sql theme={null}
tokenizeQuery(query)
```

**引数**

* `query` — ClickHouse SQLクエリの文字列。String。

**戻り値**

クエリのトークンを表す、名前付きタプル `(begin UInt64, end UInt64, type Enum8(...))` の配列。[`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/ja/reference/data-types/array)

**例**

**シンプル**

```sql title=Query theme={null}
SELECT tokenizeQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]
```

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

導入バージョン: v22.6.0

トランザクションの ID を返します。

<Note>
  この関数は実験的機能の一部です。
  実験的なトランザクションサポートを有効にするには、次の設定を [設定](/ja/concepts/features/configuration/server-config/configuration-files) に追加してください。

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  詳しくは、[Transactional (ACID) support](/ja/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) のページを参照してください。
</Note>

**構文**

```sql theme={null}
transactionID()
```

**引数**

* なし。

**戻り値**

`start_csn`、`local_tid`、`host_id` で構成されるタプルを返します。

* `start_csn`: グローバルな連番。このトランザクションの開始時点で確認されていた最新のコミットタイムスタンプです。
* `local_tid`: ローカルな連番。特定の start\_csn 内で、このホストによって開始された各トランザクションごとに一意です。
* `host_id`: このトランザクションを開始したホストの UUID。
  [`Tuple(UInt64, UInt64, UUID)`](/ja/reference/data-types/tuple)

**例**

**使用例**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘
```

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

導入バージョン: v22.6.0

読み取りに利用可能な[トランザクション](/ja/concepts/features/operations/insert/transactions#transactions-commit-and-rollback)の最新のスナップショット (Commit Sequence Number) を返します。

<Note>
  この関数は実験的な機能群の一部です。実験的なトランザクションサポートを有効にするには、設定に次の項目を追加してください。

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  詳細については、[Transactional (ACID) support](/ja/concepts/features/operations/insert/transactions#transactions-commit-and-rollback)のページを参照してください。
</Note>

**構文**

```sql theme={null}
transactionLatestSnapshot()
```

**引数**

* なし。

**戻り値**

トランザクションの最新スナップショット (CSN) を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

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

導入バージョン: v22.6.0

実行中の[トランザクション](/ja/concepts/features/operations/insert/transactions#transactions-commit-and-rollback)から参照可能な、最も古いスナップショット (Commit Sequence Number) を返します。

<Note>
  この関数は実験的機能セットの一部です。以下の設定を構成に追加して、実験的なトランザクションサポートを有効にしてください。

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  詳細は、[Transactional (ACID) support](/ja/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) のページを参照してください。
</Note>

**構文**

```sql theme={null}
transactionOldestSnapshot()
```

**引数**

* なし。

**戻り値**

トランザクションの最も古いスナップショット (CSN) を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionOldestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

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

導入バージョン: v1.1.0

明示的に定義された要素間のマッピングに基づいて、値を変換します。

この関数には 2 つのバリエーションがあります。

* `transform(x, array_from, array_to, default)` - マッピング用の配列を使って `x` を変換し、一致しない要素にはデフォルト値を返します
* `transform(x, array_from, array_to)` - 同じ変換を行いますが、一致する要素が見つからない場合は元の `x` を返します

この関数は `array_from` 内で `x` を検索し、同じ索引の `array_to` にある対応する要素を返します。
`x` が `array_from` 内で見つからない場合は、`default` の値 (4 パラメータ版) または元の `x` (3 パラメータ版) を返します。
`array_from` に一致する要素が複数ある場合は、最初の一致に対応する要素を返します。

要件:

* `array_from` と `array_to` は同じ数の要素を持っている必要があります
* 4 パラメータ版: `transform(T, Array(T), Array(U), U) -> U` - ここで `T` と `U` には、互換性のある異なる型を使用できます
* 3 パラメータ版: `transform(T, Array(T), Array(T)) -> T` - ここですべての型は同じである必要があります

**構文**

```sql theme={null}
transform(x, array_from, array_to[, default])
```

**引数**

* `x` — 変換対象の値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Decimal`](/ja/reference/data-types/decimal) または [`Float*`](/ja/reference/data-types/float) または [`String`](/ja/reference/data-types/string) または [`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime)
* `array_from` — 一致する値を検索する対象の定数配列。[`Array((U)Int*)`](/ja/reference/data-types/array) または [`Array(Decimal)`](/ja/reference/data-types/array) または [`Array(Float*)`](/ja/reference/data-types/array) または [`Array(String)`](/ja/reference/data-types/array) または [`Array(Date)`](/ja/reference/data-types/array) または [`Array(DateTime)`](/ja/reference/data-types/array)
* `array_to` — `array_from` 内で対応する一致が見つかった場合に返される値の定数配列。[`Array((U)Int*)`](/ja/reference/data-types/array) または [`Array(Decimal)`](/ja/reference/data-types/array) または [`Array(Float*)`](/ja/reference/data-types/array) または [`Array(String)`](/ja/reference/data-types/array) または [`Array(Date)`](/ja/reference/data-types/array) または [`Array(DateTime)`](/ja/reference/data-types/array)
* `default` — 任意。`x` が `array_from` 内に見つからない場合に返す値。省略した場合は、`x` をそのまま返します。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Decimal`](/ja/reference/data-types/decimal) または [`Float*`](/ja/reference/data-types/float) または [`String`](/ja/reference/data-types/string) または [`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime)

**戻り値**

`x` が `array_from` の要素に一致する場合は `array_to` の対応する値を返し、それ以外の場合は `default` (指定されている場合) または `x` (`default` が指定されていない場合) を返します。[`Any`](/ja/reference/data-types/index)

**例**

**transform(T, Array(T), Array(U), U) -> U**

```sql title=Query theme={null}
SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM test.hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC
```

```response title=Response theme={null}
┌─title─────┬──────c─┐
│ Yandex    │ 498635 │
│ Google    │ 229872 │
│ Other     │ 104472 │
└───────────┴────────┘
```

**transform(T, Array(T), Array(T)) -> T**

```sql title=Query theme={null}
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM test.hits
GROUP BY domain(Referer)
ORDER BY count() DESC
LIMIT 10
```

```response title=Response theme={null}
┌─s──────────────┬───────c─┐
│                │ 2906259 │
│ www.yandex     │  867767 │
│ ███████.ru     │  313599 │
│ mail.yandex.ru │  107147 │
│ ██████.ru      │  100355 │
│ █████████.ru   │   65040 │
│ news.yandex.ru │   64515 │
│ ██████.net     │   59141 │
│ example.com    │   57316 │
└────────────────┴─────────┘
```

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

導入バージョン: v22.9.0

2 つの uniqThetaSketch オブジェクト に対して積集合の計算 (集合演算 ∩) を行い、その結果として新しい uniqThetaSketch を返します。

**構文**

```sql theme={null}
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)
```

**引数**

* `uniqThetaSketch` — uniqThetaSketch オブジェクト。[`Tuple`](/ja/reference/data-types/tuple) または [`Array`](/ja/reference/data-types/array) または [`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime) または [`String`](/ja/reference/data-types/string) または [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

積集合の結果を含む新しい uniqThetaSketch。 [`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘
```

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

導入バージョン: v22.9.0

2 つの uniqThetaSketch オブジェクトに対して a\_not\_b 計算 (集合演算 ×) を実行し、その結果として新しい uniqThetaSketch を返します。

**構文**

```sql theme={null}
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)
```

**引数**

* `uniqThetaSketch` — uniqThetaSketch オブジェクト。[`Tuple`](/ja/reference/data-types/tuple) または [`Array`](/ja/reference/data-types/array) または [`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime) または [`String`](/ja/reference/data-types/string) または [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

a\_not\_b の結果を含む、新しい uniqThetaSketch を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
```

```response title=Response theme={null}
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘
```

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

導入バージョン: v22.9.0

2 つの uniqThetaSketch オブジェクトに対してユニオン計算 (集合演算 ∪) を行い、結果として新しい uniqThetaSketch を返します。

**構文**

```sql theme={null}
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)
```

**引数**

* `uniqThetaSketch` — uniqThetaSketch オブジェクト。[`Tuple`](/ja/reference/data-types/tuple) または [`Array`](/ja/reference/data-types/array) または [`Date`](/ja/reference/data-types/date) または [`DateTime`](/ja/reference/data-types/datetime) または [`String`](/ja/reference/data-types/string) または [`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

ユニオン結果を含む新しい uniqThetaSketch を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘
```

<div id="uptime">
  ## 稼働時間
</div>

導入バージョン: v1.1.0

サーバーの稼働時間を秒単位で返します。
分散テーブルに対して実行すると、この関数は各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を生成します。

**構文**

```sql theme={null}
uptime()
```

**引数**

* ありません。

**戻り値**

serverの稼働時間を秒単位で返します。 [`UInt32`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT uptime() AS Uptime
```

```response title=Response theme={null}
┌─Uptime─┐
│  55867 │
└────────┘
```

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

導入バージョン: v25.2.0

`Variant` カラムから、指定した型のカラムを抽出します。

**構文**

```sql theme={null}
variantElement(variant, type_name[, default_value])
```

**引数**

* `variant` — Variant カラム。 [`Variant`](/ja/reference/data-types/variant)
* `type_name` — 抽出する Variant 型の名前。 [`String`](/ja/reference/data-types/string)
* `default_value` — `variant` に指定した型の値がない場合に使用されるデフォルト値。任意の型を指定できます。省略可能です。 [`Any`](/ja/reference/data-types/index)

**戻り値**

Variant カラムから指定した Variant 型の値を抽出したカラムを返します。 [`Any`](/ja/reference/data-types/index)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;
```

```response title=Response theme={null}
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ          │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ []                                 │
│ 42            │ ᴺᵁᴸᴸ                        │                          42 │ []                                 │
│ Hello, World! │ Hello, World!               │                        ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ [1,2,3]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘
```

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

導入バージョン: v24.2.0

`Variant` カラムの各行について、Variant 型名を返します。行に NULL が含まれている場合、その行については 'None' を返します。

**構文**

```sql theme={null}
variantType(variant)
```

**引数**

* `variant` — Variant カラム。[`Variant`](/ja/reference/data-types/variant)

**戻り値**

各行の Variant 型名を格納した Enum カラムを返します。[`Enum`](/ja/reference/data-types/enum)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;
```

```response title=Response theme={null}
┌─variantType(v)─┐
│ None           │
│ UInt64         │
│ String         │
│ Array(UInt64)  │
└────────────────┘
```

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

導入バージョン: v1.1.0

ClickHouse の現在のバージョンを、`major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release` 形式の文字列として返します。
分散テーブル上で実行された場合、この関数は各分片に対応する値を持つ通常のカラムを生成します。
それ以外の場合は、定数値を返します。

**構文**

```sql theme={null}
version()
```

**引数**

* ありません。

**戻り値**

現在の ClickHouse のバージョンを返します。[`String`](/ja/reference/data-types/string)

**例**

**使用例**

```sql title=Query theme={null}
SELECT version()
```

```response title=Response theme={null}
┌─version()─┐
│ 24.2.1.1  │
└───────────┘
```

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

導入バージョン: v1.1.0

値をテキスト形式 (タブ区切り) でコンソールに出力する際の、おおよその幅を計算します。
この関数は、システムが Pretty フォーマットを実装するために使用されます。
`NULL` は、Pretty フォーマットでは `NULL` に対応する文字列として表現されます。

**構文**

```sql theme={null}
visibleWidth(x)
```

**引数**

* `x` — 任意のデータ型の値。[`Any`](/ja/reference/data-types/index)

**戻り値**

テキストフォーマットで表示した場合のおおよその幅を返します。[`UInt64`](/ja/reference/data-types/int-uint)

**例**

**NULL の表示幅を計算**

```sql title=Query theme={null}
SELECT visibleWidth(NULL)
```

```response title=Response theme={null}
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘
```

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

導入バージョン: v21.11.0

現在のZooKeeperセッションの稼働時間を秒単位で返します。

**構文**

```sql theme={null}
zookeeperSessionUptime()
```

**引数**

* なし。

**戻り値**

現在の ZooKeeper セッションの稼働時間を秒単位で返します。 [`UInt32`](/ja/reference/data-types/int-uint)

**例**

**使用例**

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

```response title=Response theme={null}
┌─zookeeperSessionUptime()─┐
│                      286 │
└──────────────────────────┘
```
