データ型
TiDB Cloud Lake は強い型付けを持つカラムにデータを格納します。このページでは、サポートされるデータ型、自動変換および明示的変換の仕組み、NULL 値やデフォルト値の扱いについて要約します。
基本型
日付・時刻型
構造化型・半構造化型
ドメイン固有型
キャストと変換
明示的キャスト
CAST(expr AS TYPE)は ANSI 構文を使用し、変換が無効な場合は失敗します。expr::TYPEは PostgreSQL スタイルの短縮記法です。TRY_CAST(expr AS TYPE)は、変換に失敗したときにエラーを発生させる代わりに NULL を返します。
暗黙的キャスト(型強制)
TiDB Cloud Lake は、明確に定義された状況で自動変換を実行します。
- 整数は
INT64に拡張されます。例:UInt8 -> INT64。 - 数値は必要に応じて
FLOAT64に拡張されます。 - 式の中に NULL が現れる場合、任意の型
TはNullable(T)になります。 - すべての型は
VARIANTに拡張できます。 - 複合型は要素ごとに型強制されます(
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 は型ごとのデフォルト値を書き込みます。
例:
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 を使って確認できます。