更新时间:2024-07-24 GMT+08:00

HetuEngine隐式转换对照表

在开启隐式转换功能后,当数据类型不匹配时会隐式转换,但并是不是所有的数据类型都支持隐式转换。以下为当前隐式转换功能支持的数据类型转换表:

表1 隐式转换对照表

-

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

REAL

DOUBLE

DECIMAL

VARCHAR

BOOLEAN

\

Y(1)

Y

Y

Y

Y

Y

Y

Y(2)

TINYINT

Y(3)

\

Y

Y

Y

Y

Y

Y

Y

SMALLINT

Y

Y(4)

\

Y

Y

Y

Y

Y

Y

INTEGER

Y

Y

Y

\

Y

Y

Y

Y

Y

BIGINT

Y

Y

Y

Y

\

Y

Y

Y

Y

REAL

Y

Y

Y

Y

Y

\

Y

Y(5)

Y

DOUBLE

Y

Y

Y

Y

Y

Y

\

Y

Y

DECIMAL

Y

Y

Y

Y

Y

Y

Y

\(6)

Y

VARCHAR

Y(7)

Y

Y

Y

Y

Y

Y

Y(8)

\

CHAR

N

N

N

N

N

N

N

N

Y

VARBINARY

N

N

N

N

N

N

N

N

N

JSON

N

N

N

N

N

N

N

N

Y

DATE

N

N

N

N

N

N

N

N

Y

TIME

N

N

N

N

N

N

N

N

Y

TIME WITH TIME ZONE

N

N

N

N

N

N

N

N

Y

TIMESTAMP

N

N

N

N

N

N

N

N

Y

TIMESTAMP WITH TIME ZONE

N

N

N

N

N

N

N

N

Y

表2 隐式转换对照表(续)

-

CHAR

VARBINARY

JSON

DATE

TIME

TIME WITH TIME ZONE

TIMESTAMP

TIMESTAMP WITH TIME ZONE

BOOLEAN

N

N

Y

N

N

N

N

N

TINYINT

N

N

Y

N

N

N

N

N

SMALLINT

N

N

Y

N

N

N

N

N

INTEGER

N

N

Y

N

N

N

N

N

BIGINT

N

N

Y

N

N

N

N

N

REAL

N

N

Y

N

N

N

N

N

DOUBLE

N

N

Y

N

N

N

N

N

DECIMAL

N

N

Y

N

N

N

N

N

VARCHAR

Y(9)

Y

Y

Y(10)

Y(11)

Y(12)

Y(13)

Y

CHAR

\

N

N

N

N

N

N

N

VARBINARY

N

\

N

N

N

N

N

N

JSON

N

N

\

N

N

N

N

N

DATE

N

N

Y

\

N

N

Y(14)

Y

TIME

N

N

N

N

\

Y(15)

Y(16)

Y

TIME WITH TIME ZONE

N

N

N

N

Y

\

Y

Y

TIMESTAMP

N

N

N

Y

Y

Y

\

Y

TIMESTAMP WITH TIME ZONE

N

N

N

Y

Y

Y

Y

\

  1. BOOLEAN->NUMBER:结果只会是0/1。
  2. BOOLEAN->VARCHAR:字符结果只会是“TRUE”或“FALSE”。
  3. NUMBER -> BOOLEAN:0就是false,非0就是true。
  4. BIG PRECISION -> SMALL:不能大于目标类型的取值范围,否则会报错。
  5. REAL/FLOAT ->DECIMAL:目标类型的整数位必须大于或等于REAL/FLOAT整数位,否则转换报错,小数位不足会截断。
  6. DECIMAL->DECIMAL:目标类型整数位的范围必须大于等于源类型,否则转换失败,小数位不足会截断。
  7. VARCHAR->BOOLEAN:字符只有 '0','1','TRUE','FALSE' 可转换。
  8. VARCHAR->DECIMAL:如果小数位大于目标decimal的小数位,则会发生截断,如果整数位超过目标decimal的范围则报错。
  9. VARCHAR->CHAR:如果VARCHAR长度超过目标长度,则会截断。
  10. VARCHAR->DATE:仅支持按照“-”分割的日期,例如2000-01-01。
  11. VARCHAR->TIME:仅支持严格的日期格式:HH:MM:SS.XXX。
  12. VARCHAR->TIME ZONE:仅支持严格的格式,例如01:02:03.456 America/Los_Angeles。
  13. VARCHAR->TIMESTAMP:仅支持严格的格式:YYYY-MM-DD HH:MM:SS.XXX。
  14. DATE->TIMESTAMP:自动补齐时间,补零 '2010-01-01' -> 2010-01-01 00:00:00.000。
  15. TIME->TIME WITH TIME ZONE:自动补齐时区。
  16. TIME->TIMESTAMP:自动补齐日期,取默认值1970-01-01。