全部產品
Search
文件中心

AnalyticDB:基礎資料類型

更新時間:Nov 06, 2025

本文介紹AnalyticDB for MySQL支援哪些資料類型,與MySQL資料類型的差異對比以及隱式轉換規則。

AnalyticDB for MySQL支援的基礎資料類型

類型

資料類型

說明

與MySQL資料類型差異

數實值型別

BOOLEAN布爾類型

值只能是01,儲存位元組數1位元位。

  • 取值0的邏輯意義為假。

  • 取值1的邏輯意義為真。

一致。

TINYINT微整數類型

取值範圍-128~127,儲存位元組數1位元組。

一致。

SMALLINT小整數類型

取值範圍-32768~32767,儲存位元組數2位元組。

一致。

INTINTEGER整數類型

取值範圍-2147483648~2147483647,儲存位元組數4位元組。

AnalyticDB for MySQL中的int對應MySQL中的int或者mediumint

BIGINT大整數類型

取值範圍-9223372036854775808~9223372036854775807,儲存位元組數8位元組。

一致。

FLOAT單精確度浮點數

取值範圍-3.402823466E+38~-1.175494351E-38, 0, 1.175494351E-38~3.402823466E+38,IEEE標準,儲存位元組數4位元組。

一致。

DOUBLE雙精確度浮點數

取值範圍-1.7976931348623157E+308~-2.2250738585072014E-308, 0, 2.2250738585072014E-308~1.7976931348623157E+308,IEEE標準,儲存位元組數8位元組。

一致。

DECIMAL(m,d)NUMERIC

m是數值的最大精度,取值範圍為1~38d是小數點右側數位位元,要求dm

  • MySQL支援的最大精度為65

  • AnalyticDB for MySQL支援的預設最大精度為38

    如需調整最大精度,請聯絡支援人員評估並調整。

字元類型

VARCHAR變長字串類型

儲存位元組數最大為16MB,使用時無需指定儲存長度。

說明

若您指定儲存長度VARCHAR(255),括弧中的數字僅用於文法相容,實際可以儲存超過255個字元,由資料本身決定(最大16MB)。請勿依賴該參數進行長度校正。

AnalyticDB for MySQL中的varchar對應MySQL中的charvarchartextmediumtext或者longtext

BINARY二進位字串類型

儲存字元長度。

AnalyticDB for MySQL中的binary對應MySQL中的binaryvarbinary或者blob

時間類型

DATE日期類型

取值範圍'0001-01-01'~'9999-12-31',支援的資料格式為'YYYY-MM-DD',儲存位元組數為4位元組。

  • MySQL支援0000-00-00

  • AnalyticDB for MySQL對時間類型的數值會進行合法性校正。當寫入不合理的數值時,例如0000-00-00AnalyticDB for MySQL會自動將其轉化為NULL。請確保寫入的日期和時間有意義。

TIME時間類型

取值範圍'00:00:00'~'23:59:59',支援的資料格式為'HH:MM:SS',儲存位元組數為8位元組。

  • MySQL支援自訂精度。

  • AnalyticDB for MySQL支援的精度為毫秒,即小數點後三位。

DATETIME時間戳記類型

取值範圍'0001-01-01 00:00:00.000'UTC~'9999-12-31 23:59:59.999'UTC,支援的資料格式為'YYYY-MM-DD HH:MM:SS',儲存位元組數為8位元組。

重要

datetime預設UTC時間,且不支援更改。

  • MySQL支援0000-00-00,支援自訂精度。

  • AnalyticDB for MySQL對時間類型的數值會進行合法性校正。當寫入不合理的數值時,例如0000-00-00AnalyticDB for MySQL會自動將其轉化為NULL。請確保寫入的日期和時間有意義。

TIMESTAMP時間戳記類型

時間戳記類型,取值範圍'0100-01-01 00:00:00.000'UTC~'9999-12-31 23:59:59.999'UTC,支援的資料格式為'YYYY-MM-DD HH:MM:SS',儲存位元組數為8位元組。

說明

TIMESTAMP預設為系統時區,可以在SESSION中設定時區。

  • MySQL支援自訂精度。

  • AnalyticDB for MySQL支援的精度為毫秒,即小數點後三位。

空間類型

POINT

地理座標,由座標經度x和緯度y組成。

一致。

隱式類型轉換

隱式類型轉換是指在執行SQL查詢操作時,由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

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

REAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

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

BOOLEAN

1 BOOLEAN

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

不支援

不支援

不支援

不支援

INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

0 DECIMAL

0 REAL

0 DOUBLE

1 INTEGER

1 INTEGER

INTEGER

INTEGER

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

TIME

1 TIME

不支援

不支援

不支援

0 BIGINT

0 BIGINT

不支援

不支援

0 DOUBLE

1 TIME

0 BIGINT

0 BIGINT

0 DATETIME

DATE

1 DATE

不支援

不支援

不支援

0 BIGINT

0 BIGINT

不支援

不支援

0 DOUBLE

0 BIGINT

1 DATE

0 TIMESTAMP

0 DATETIME

TIMESTAMP

1 TIMESTAMP

不支援

不支援

不支援

0 BIGINT

0 BIGINT

不支援

不支援

0 DOUBLE

1 TIMESTAMP

1 TIMESTAMP

1 TIMESTAMP

1 TIMESTAMP

DATETIME

1 DATETIME

不支援

不支援

不支援

0 BIGINT

0 BIGINT

不支援

不支援

0 DOUBLE

1 DATETIME

1 DATETIME

1 DATETIME

1 DATETIME

強制類型轉換最佳化(ENFORCE_UNWRAP_CAST

強制類型轉換最佳化是資料庫系統中用於控制類型轉換策略的最佳化機制,旨在解決因隱式類型轉換導致的查詢效能下降和結果準確性問題。

配置方式

強制類型轉換最佳化支援兩種配置方式,可根據業務需求靈活選擇。

  • 全域配置

    通過設定全域參數開啟最佳化,適用於所有查詢。

    SET ADB_CONFIG ENFORCE_UNWRAP_CAST = true;
  • 通過Hint方式配置

    針對特定查詢臨時啟用最佳化,不影響其他查詢。

    /*+ ENFORCE_UNWRAP_CAST=true */

樣本

假設test表中col列為VARCHAR類型,該列包含值'1''1a''abc'。執行如下查詢語句:

SELECT col FROM test WHERE col = 1;

根據enforce_unwrap_cast配置狀態不同,需特別注意結果變化:

  • 預設關閉狀態ENFORCE_UNWRAP_CAST=false):系統將VARCHAR列隱式轉換為BIGINT類型進行比較。此時'1''1a'均會被截斷,非數字部分轉換為數值1參與比較,最終返回兩個匹配結果'1''1a'。由於該隱式轉換髮生在列值層面,導致無法觸發下推最佳化,系統需要掃描全表。此時,查詢效能會降低。

  • 開啟狀態(ENFORCE_UNWRAP_CAST=true):系統將INTEGER常量轉換為VARCHAR類型進行字串比較。此時只有'1'能與常量1完全符合,'1a'因字串不匹配而被過濾,最終僅返回一個匹配結果'1'。這種最佳化策略可將比較邏輯下推至儲存層,有效減少資料掃描量,提升查詢效能。