すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:基本的なデータ型

最終更新日:Nov 09, 2025

このトピックでは、AnalyticDB for MySQL でサポートされているデータ型、MySQL データ型との違い、および暗黙的な型変換ルールについて説明します。

AnalyticDB for MySQL でサポートされている基本的なデータ型

カテゴリ

データ型

説明

MySQL データ型との比較

数値

BOOLEAN

有効値: 0 および 1。BOOLEAN 値のサイズは 1 ビットです。

  • 0: false。

  • 1: true。

違いはありません。

TINYINT

有効値: -128 から 127。TINYINT 値のサイズは 1 バイトです。

違いはありません。

SMALLINT

有効値: -32768 から 32767。SMALLINT 値のサイズは 2 バイトです。

違いはありません。

INT または INTEGER

有効値: -2147483648 から 2147483647。INT または INTEGER 値のサイズは 4 バイトです。

AnalyticDB for MySQL の INT 型は、MySQL の INT または MEDIUMINT 型に対応します。

BIGINT

有効値: -9223372036854775808 から 9223372036854775807。BIGINT 値のサイズは 8 バイトです。

違いはありません。

FLOAT

有効値: -3.402823466E+38 から -1.175494351E-380、および 1.175494351E-38 から 3.402823466E+38。FLOAT 型は IEEE 標準に準拠しています。FLOAT 値のサイズは 4 バイトです。

違いはありません。

DOUBLE

有効値: -1.7976931348623157E+308 から -2.2250738585072014E-3080、および 2.2250738585072014E-308 から 1.7976931348623157E+308。DOUBLE 型は IEEE 標準に準拠しています。DOUBLE 値のサイズは 8 バイトです。

違いはありません。

DECIMAL(m,d) または NUMERIC

m は最大精度を示し、その値の範囲は 1 から 38 です。d は小数点以下の桁数を示します。d の値は m の値以下である必要があります。

  • MySQL は最大 65 の精度をサポートしています。

  • AnalyticDB for MySQL は最大精度 38 をサポートします。

最大精度を調整するには、テクニカルサポートにお問い合わせください。

文字列

VARCHAR

VARCHAR 値のサイズは最大 16 MB です。VARCHAR を使用する場合、長さを指定する必要はありません。

説明

長さを指定した場合 (VARCHAR(255) など)、括弧内の数値は構文の互換性のためにのみ使用されます。実際の長さはデータサイズによって異なり (最大 16 MB)、255 文字を超える場合があります。指定された長さを使用して長さの検証を実行しないでください。

AnalyticDB for MySQL の VARCHAR 型は、MySQL の CHARVARCHARTEXTMEDIUMTEXT、または LONGTEXT 型に対応します。

BINARY

ストレージ文字の長さ。

AnalyticDB for MySQL の BINARY 型は、MySQL の BINARYVARBINARY、または BLOB 型に対応します。

時間

DATE

有効値: '0001-01-01' から '9999-12-31'。DATE 値は 'YYYY-MM-DD' 形式で、サイズは 4 バイトです。

  • MySQL は 0000-00-00 をサポートしています。

  • AnalyticDB for MySQL は時間型の値の有効性をチェックし、0000-00-00 のような無意味な数値を自動的に NULL に変換します。 日付と時刻が実際の値に対応していることを確認してください。

TIME

有効値: '00:00:00' から '23:59:59'。TIME 値は 'HH:MM:SS' 形式で、サイズは 8 バイトです。

  • MySQL はカスタム精度をサポートしています。

  • AnalyticDB for MySQL はミリ秒レベルの精度 (小数点以下最大 3 桁) をサポートしています。

DATETIME

有効値: '0001-01-01 00:00:00.000' から '9999-12-31 23:59:59.999'。DATETIME 値は 'YYYY-MM-DD HH:MM:SS' 形式です。サイズは 8 バイトで、UTC です。

重要

デフォルトでは、DATETIME は UTC 時間を使用します。DATETIME 値のタイムゾーンを変更することはできません。

  • MySQL は 0000-00-00 とカスタム精度をサポートしています。

  • AnalyticDB for MySQL は時間型の値の有効性をチェックし、0000-00-00 のような無意味な数値を自動的に NULL に変換します。 日付と時刻が実際の値に対応していることを確認してください。

TIMESTAMP

有効値: '0100-01-01 00:00:00.000' から '9999-12-31 23:59:59.999'。TIMESTAMP 値は 'YYYY-MM-DD HH:MM:SS' 形式です。サイズは 8 バイトで、UTC です。

説明

デフォルトでは、TIMESTAMP はシステムのタイムゾーンを使用します。セッションごとにタイムゾーンを指定できます。

  • MySQL はカスタム精度をサポートしています。

  • AnalyticDB for MySQL はミリ秒レベルの精度 (小数点以下最大 3 桁) をサポートしています。

空間

POINT

地理座標 x および y。

違いはありません。

暗黙の型変換

暗黙の型変換とは、SQL クエリ操作を 実行する 際に、コンテキストと型変換ルールに基づいて AnalyticDB for MySQL によって実行される自動型変換のことです。

説明
  • 暗黙の型変換ルールは、AnalyticDB for MySQL の一般的な 基本データ型 を対象としています。複合データ型 は、暗黙の型変換をサポートしていません。

  • デフォルトの暗黙的な型変換ルールがビジネス要件を満たしていない場合は、明示的な型変換を使用できます。

射影変換ルール

SELECT 文の列が定数と比較される場合、戻り値の型は次の表に示すデータ型に暗黙的に変換されます。暗黙的な型変換がサポートされていない場合は、エラーが発生します。

列/定数

VARCHAR

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

VARCHAR

VARCHAR

BOOLEAN

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

BOOLEAN

BOOLEAN

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

サポートされていません

DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

TINYINT

BIGINT

TINYINT

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

SMALLINT

BIGINT

SMALLINT

SMALLINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

INTEGER

BIGINT

INTEGER

INTEGER

INTEGER

INTEGER

BIGINT

DECIMAL

DOUBLE

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DOUBLE

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DECIMAL

サポートされていません

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

TIME

TIME

サポートされていません

サポートされていません

サポートされていません

BIGINT

BIGINT

サポートされていません

DOUBLE

TIME

BIGINT

BIGINT

DATETIME

DATE

DATE

サポートされていません

サポートされていません

サポートされていません

BIGINT

BIGINT

サポートされていません

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

TIMESTAMP

TIMESTAMP

サポートされていません

サポートされていません

サポートされていません

BIGINT

BIGINT

サポートされていません

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

DATETIME

DATETIME

サポートされていません

サポートされていません

サポートされていません

BIGINT

BIGINT

サポートされていません

DOUBLE

DATETIME

DATETIME

DATETIME

DATETIME

フィルタ変換ルール

WHERE 句の列が定数と比較されると、戻り値の型は次の表に示すデータの型に暗黙的に変換されます。 暗黙の型変換がサポートされていない場合、エラーが発生します。

データ型が異なる場合、暗黙の型変換によってプッシュダウンが失敗し、全表スキャンがトリガーされる可能性があり、クエリのパフォーマンスが大幅に低下します。プッシュダウンとは、インデックスベースのフィルタリングのために、フィルター条件をストレージ レイヤーにプッシュすることです。これにより、フィルターの度合いが高い場合にデータ スキャンの負荷が軽減され、クエリのパフォーマンスが向上します。

次の表では、戻りデータ型の前の 1 はプッシュダウンの成功を示し、0 はプッシュダウンの失敗を示します。

列/定数

VARCHAR

ブール値

TINYINT

SMALLINT

整数

BIGINT

DECIMAL 型

実数

ダブル

時間

日付

タイムスタンプ

日時

VARCHAR

1 VARCHAR

0 BOOLEAN

0 BIGINT

0 BIGINT

0 BIGINT

0 BIGINT

0 DECIMAL

0 REAL

0 DOUBLE

0 TIME

0 DATE

0 TIMESTAMP

0 DATETIME

ブール値

1 ブール値

1 BOOLEAN

0 TINYINT

0 SMALLINT

0 INTEGER

0 BIGINT

サポートされていません

0 REAL

0 DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

0 DECIMAL

0 REAL

0 DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

0 DECIMAL

0 REAL

0 DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

整数

1 整数

1 整数

1 整数

1 整数

1 整数

1 整数

0 固定小数点数

0 実数

0 倍精度浮動小数点数

1 整数

1 整数

整数

整数

BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

0 DECIMAL

0 REAL

0 DOUBLE

1 BIGINT

1 BIGINT

BIGINT

BIGINT

DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

0 REAL

0 DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

0 DOUBLE

サポートされていません

サポートされていません

サポートされていません

サポートされていません

DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

時間

1 TIME

サポートされていません

サポートされていません

サポートされていません

0 BIGINT

0 BIGINT

サポートされていません

サポートされていません

0 DOUBLE

1 TIME

0 BIGINT

0 BIGINT

0 DATETIME

日付

1 日付

サポートされていません

サポートされていません

サポートされていません

0 BIGINT

0 BIGINT

サポートされていません

サポートされていません

0 DOUBLE

0 BIGINT

1 日付

0 タイムスタンプ

0 DATETIME

タイムスタンプ

1 タイムスタンプ

サポートされていません

サポートされていません

サポートされていません

0 BIGINT

0 BIGINT

サポートされていません

サポートされていません

0 DOUBLE

1 タイムスタンプ

1 タイムスタンプ

1 TIMESTAMP

1 タイムスタンプ

日時

1 DATETIME

サポートされていません

サポートされていません

サポートされていません

0 BIGINT

0 BIGINT

サポートされていません

サポートされていません

0 DOUBLE

1 DATETIME

1 DATETIME

1 DATETIME

1 DATETIME

強制型変換の最適化 (ENFORCE_UNWRAP_CAST)

強制型変換最適化は、データベースシステムで型変換を制御するために使用されます。これは、暗黙的な型変換によって引き起こされるクエリのパフォーマンス低下と結果の精度の問題に対処します。

構成方法

強制型変換の最適化は、2 つの構成メソッドをサポートしています。ビジネス要件に基づいていずれかを選択できます。

  • グローバル構成

    グローバルパラメーターを設定することで最適化を有効にします。これはすべてのクエリに適用されます。

    SET ADB_CONFIG ENFORCE_UNWRAP_CAST = true; /* グローバルパラメーターを設定して最適化を有効にする */
  • ヒント構成

    他のクエリに影響を与えることなく、特定のクエリに対して一時的に最適化を有効にします。

    /*+ ENFORCE_UNWRAP_CAST=true */ /* 特定のクエリに対して最適化を一時的に有効にする */

col 列は、test テーブルの VARCHAR 型で、'1''1a''abc' の値が含まれています。次の文を実行します。

SELECT col FROM test WHERE col = 1;

結果は、enforce_unwrap_cast パラメーターの構成ステータスによって異なります。

  • デフォルトの無効ステータス (ENFORCE_UNWRAP_CAST=false): システムは、比較のために VARCHAR 列を BIGINT 型に暗黙的に変換します。この場合、'1''1a' は切り捨てられ、数値以外の部分は比較のために数値 1 に変換されます。2 つのマッチング結果 '1''1a' が返されます。列値に対して暗黙の型変換が実行されるため、プッシュダウン最適化がトリガーされず、システムはテーブル全体をスキャンする必要があります。この場合、クエリのパフォーマンスが低下します。

  • 有効ステータス (ENFORCE_UNWRAP_CAST=true): システムは、文字列比較のために INTEGER 定数を VARCHAR 型に変換します。この場合、'1' のみが定数 1 と一致し、'1a' は文字列の不一致により除外されます。一致する結果は '1' の 1 つだけ返されます。この最適化ポリシーは、比較ロジックをストレージ レイヤーにプッシュダウンできるため、スキャンされるデータ量が効果的に削減され、クエリのパフォーマンスが向上します。