数据类型和类型转换函数


数据类型


数值类型(Numeric)

  • TINYINT

    • 1 字节, [-128, 127]
  • SMALLINT

    • 2 字节, [-32768, 32767]
  • INT/INTEGER

    • 4 字节, [-2147483648, 2147483647]
  • BIGINT

    • 8 字节, [-9223372036854775808, 9223372036854775807]
  • 整数类型补充

    • 默认情况下,整数文本被假定为 INT

    • 若数字超过 INT 的范围,它将被解释为 BIGINT

    • 也可以在数字后面添加后缀指定类型

      • 类型 后缀 示例
        BIGINT L 100L
        SMALLINT S 100S
        TINYINT Y 100Y
  • FLOAT

    • 4 字节单精度浮点数
  • DOUBLE

    • 8 字节双精度浮点数
  • DECIMAL

    • 高精度数值类型
    • 用户自定义精度和规模:decimal(12, 6)
  • NUMERIC

    • 同 DECIMAL 类型,since 3.0.0

日期时间类型(Date/Time)

  • TIMESTAMP
    • 整数数值类型
      • UNIX timestamp 时间戳
    • 字符串类型
      • JDBC 兼容 java.sql.Timestamp 格式
      • “YYYY-MM-DD HH:MM:SS.fffffffff” (9 decimal place precision)
    • 浮点数值类型
      • decimal 精度的 UNIX timestamp 时间戳
  • DATE
    • 0000-­01-­01 to 9999-­12-­31
  • INTERVAL(未明)
    • 添加时间单位别名以提高可移植性/可读性

字符串类型(String)

  • STRING
    • 字符串
  • VARCHAR
    • 变长字符串
    • 长度:[1, 65535]
  • CHAR
    • 定长字符串
    • 长度:[1, 255]
    • 长度不足的部分自动加空格

布尔类型(BOOLEAN)


BINARY 类型

类似于 byte[] 字节数组


复合(集合)类型

参考


数据类型隐式转换

这些类型按以下层次结构组织(其中父实例是所有子实例的超级类型):

  • Number
    • DOUBLE
      • FLOAT
        • BIGINT
          • INT
            • SMALLINT
              • TINYINT
      • STRING(与 FLOAT 对齐)
  • BOOLEAN(与 Number 对齐)

从子类型到父类型(及以上)允许隐式转换,确保不丢失精度

void boolean tintint smallint int bigint float double decimal string varchar timestamp date binary
void to ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔
boolean to ✘ ✔ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘
tinyint to ✘ ✘ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✘ ✘ ✘
smallint to ✘ ✘ ✘ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✘ ✘ ✘
int to ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✘ ✘ ✘
bigint to ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✔ ✔ ✔ ✘ ✘ ✘
float to ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✔ ✔ ✘ ✘ ✘
double to ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✔ ✘ ✘ ✘
decimal to ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✘ ✘ ✘
string to ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✔ ✘ ✘ ✘
varchar to ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✔ ✘ ✘ ✘
timestamp to ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✔ ✘ ✘
date to ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔ ✔ ✘ ✔ ✘
binary to ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✔

类型(显式)转换函数

  • binary(string|binary)
    • 转为 binary 类型(返回 binary)
  • cast(expr as <type>)
    • 将 expr 转换为指定的数据类型
    • 如果 cast(expr as boolean) ,转为布尔值,则非空字符串返回 true

023