メインコンテンツまでスキップ
メインコンテンツまでスキップ

FixedString(N)

Nバイトの固定長文字列(文字でもコードポイントでもない)。

FixedString型のカラムを宣言するには、次の構文を使用します:

ここで、Nは自然数です。

FixedString型は、データが正確にNバイトの長さである場合に効率的です。それ以外の場合は、効率が低下する可能性があります。

FixedString型のカラムに効率的に保存できる値の例:

  • IPアドレスのバイナリ表現(IPv6の場合はFixedString(16))。
  • 言語コード(ru_RU、en_US など)。
  • 通貨コード(USD、RUB など)。
  • ハッシュのバイナリ表現(MD5の場合はFixedString(16)、SHA256の場合はFixedString(32))。

UUID値を保存するには、UUIDデータ型を使用してください。

データを挿入するとき、ClickHouseは:

  • 文字列がNバイト未満の場合にヌルバイトで文字列を補完します。
  • 文字列がNバイトを超える場合、Too large value for FixedString(N)例外をスローします。

データを選択するとき、ClickHouseは文字列の末尾のヌルバイトを削除しません。WHERE句を使用する場合、FixedStringの値に一致させるためにヌルバイトを手動で追加する必要があります。以下の例は、FixedStringWHERE句を使用する方法を示しています。

次のFixedString(2)カラムを持つテーブルを考えます:

クエリSELECT * FROM FixedStringTable WHERE a = 'b'はデータを返しません。このフィルタパターンをヌルバイトで補完する必要があります。

この動作は、文字列がスペースでパディングされ、出力時にスペースが削除されるCHAR型のMySQLとは異なります。

FixedString(N)値の長さは一定であることに注意してください。length関数は、FixedString(N)値がヌルバイトのみで埋められている場合でもNを返しますが、empty関数はこの場合1を返します。