数据类型和类型转换函数


数据类型


数值类型(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