📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

データ型



TiDB Cloud Lake は強い型付けを持つカラムにデータを格納します。このページでは、サポートされるデータ型、自動変換および明示的変換の仕組み、NULL 値やデフォルト値の扱いについて要約します。

基本型

データ型エイリアスストレージ / 精度最小値最大値
BOOLEANBOOL1 バイト––
BINARYVARBINARY可変––
VARCHARSTRING可変––
TINYINTINT81 バイト-128127
SMALLINTINT162 バイト-3276832767
INTINT324 バイト-21474836482147483647
BIGINTINT648 バイト-92233720368547758089223372036854775807
FLOAT–4 バイト (Float32)-3.40e383.40e38
DOUBLE–8 バイト (Float64)-1.79e3081.79e308
DECIMAL–16/32 バイト (精度 ≤38/76)-(10^P-1)/10^S(10^P-1)/10^S

日付・時刻型

データ型エイリアス精度 / 備考
DATE–日単位の精度
TIMESTAMPDATETIMEマイクロ秒、セッションタイムゾーンで出力
TIMESTAMP_TZ–マイクロ秒 + オフセットを保存
INTERVAL–マイクロ秒、負の期間をサポート

構造化型・半構造化型

データ型サンプル説明
ARRAY[1, 2, 3]同じ内部型を持つ値の順序付きリストです。
TUPLE('2023-02-14','Valentine's Day')要素型が宣言された固定長の順序付きリストです。
MAP{'a': 1, 'b': 2}キーと値のコレクションです(内部的にはキー型と値型のタプル)。
VARIANT[1, {"name":"datalake"}]プリミティブ、配列、オブジェクトを混在できる JSON ライクなコンテナです。
BITMAP<bitmap binary>メンバーシップ判定と集合演算向けに最適化された圧縮ビットマップです。

ドメイン固有型

データ型説明
VECTOR類似検索 / ML ワークロード向けの Float32 埋め込みです。
GEOMETRY / GEOGRAPHYWKB/EWKB 形式で格納される空間オブジェクトです。

キャストと変換

明示的キャスト

  • CAST(expr AS TYPE) は ANSI 構文を使用し、変換が無効な場合は失敗します。
  • expr::TYPE は PostgreSQL スタイルの短縮記法です。
  • TRY_CAST(expr AS TYPE) は、変換に失敗したときにエラーを発生させる代わりに NULL を返します。

暗黙的キャスト(型強制)

TiDB Cloud Lake は、明確に定義された状況で自動変換を実行します。

  1. 整数は INT64 に拡張されます。例: UInt8 -> INT64。
  2. 数値は必要に応じて FLOAT64 に拡張されます。
  3. 式の中に NULL が現れる場合、任意の型 T は Nullable(T) になります。
  4. すべての型は VARIANT に拡張できます。
  5. 複合型は要素ごとに型強制されます(T -> U のとき Array<T> -> Array<U>。タプルやマップも同様です)。

対象カラムが NOT NULL の場合、データに NULL が含まれる可能性があるなら、明示的に Nullable<T> にキャストするか、TRY_CAST を使用してください。

SELECT CONCAT('1', col); -- safe (strings) SELECT CONCAT(1, col); -- may fail if `col` can't coerce to number

NULL の扱いとデフォルト値

カラムは、NOT NULL と宣言されていない限り NULL 値を許可します。NOT NULL カラムが INSERT 時に省略されると、TiDB Cloud Lake は型ごとのデフォルト値を書き込みます。

型カテゴリデフォルト
整数0
浮動小数点0.0
文字列 / バイナリ空文字列 / 空バイナリ
日付1970-01-01
タイムスタンプ1970-01-01 00:00:00
真偽値FALSE

例:

CREATE TABLE test ( id INT64, name STRING NOT NULL, age INT32 ); INSERT INTO test (id, name, age) VALUES (2, 'Alice', NULL); -- allowed INSERT INTO test (id, name) VALUES (1, 'John'); -- age becomes NULL INSERT INTO test (id, age) VALUES (3, 45); -- name uses default ''

カラムのデフォルト値と NULL 許容性は、いつでも DESC test または SHOW CREATE TABLE test を使って確認できます。

このページは役に立ちましたか?