#数据类型转换

数据类型转换多发生在操作的输入类型与规定类型不一致,或一个表达式中包含多个不同数据类型的情况中,此时,可以通过隐式转换或显式转换来整合数据类型。

# 隐式转换

下表中的列标题表示原始类型,行标题表示目标类型,✓表示支持转换,X表示不支持转换,--表示无需转换。

(1)

数据类型 TINYINT SMALLINT INTEGER BIGINT TINYINT UNSIGNED SMALLINT UNSIGNED INTEGER UNSIGNED BIGINT UNSIGNED BIT
TINYINT -- ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
SMALLINT ✓ -- ✓ ✓ ✓ ✓ ✓ ✓ ✓
INTEGER ✓ ✓ -- ✓ ✓ ✓ ✓ ✓ ✓
BIGINT ✓ ✓ ✓ -- ✓ ✓ ✓ ✓ ✓
TINYINT UNSIGNED ✓ ✓ ✓ ✓ -- ✓ ✓ ✓ ✓
SMALLINT UNSIGNED ✓ ✓ ✓ ✓ ✓ -- ✓ ✓ ✓
INTEGER UNSIGNED ✓ ✓ ✓ ✓ ✓ ✓ -- ✓ ✓
BIGINT UNSIGNED ✓ ✓ ✓ ✓ ✓ ✓ ✓ -- ✓
FLOAT ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
DOUBLE ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
DECIMAL ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
CHAR(SIZE) ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
VARCHAR(SIZE) ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
DATE ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
TIME ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
TIMESTAMP ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
BINARY(SIZE)
VARBINARY(SIZE)
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
TINYTEXT
MEDIUMTEXT
TEXT
LONGTEXT
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
TINYBLOB
MEDIUMBLOB
BLOB
LONGBLOB
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
BIT ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ --

(2)

数据类型 FLOAT DOUBLE DECIMAL CHAR(SIZE) VARCHAR(SIZE) DATE TIME* TIMESTAMP
TINYINT ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
SMALLINT ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
INTEGER ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
BIGINT ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
TINYINT UNSIGNED ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
SMALLINT UNSIGNED ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
INTEGER UNSIGNED ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
BIGINT UNSIGNED ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
FLOAT -- ✓ ✓ ✓ ✓ ✓ ✓ ✓
DOUBLE ✓ -- ✓ ✓ ✓ ✓ ✓ ✓
DECIMAL ✓ ✓ -- ✓ ✓ ✓ ✓ ✓
CHAR(SIZE) ✓ ✓ ✓ -- ✓ ✓ ✓ ✓
VARCHAR(SIZE) ✓ ✓ ✓ ✓ -- ✓ ✓ ✓
DATE ✓ ✓ ✓ ✓ ✓ -- ✓ ✓
TIME ✓ ✓ ✓ ✓ ✓ ✓ -- ✓
TIMESTAMP ✓ ✓ ✓ ✓ ✓ ✓ ✓ --
BINARY(SIZE)
VARBINARY(SIZE)
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
TINYTEXT
MEDIUMTEXT
TEXT
LONGTEXT
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
TINYBLOB
MEDIUMBLOB
BLOB
LONGBLOB
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
BIT ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓

(3)

数据类型 BINARY(SIZE) VARBINARY(SIZE) TINYTEXT
MEDIUMTEXT
TEXT
LONGTEXT
TINYBLOB
MEDIUMBLOB
BLOB
LONGBLOB
TINYINT ✓ ✓ ✓ X
SMALLINT ✓ ✓ ✓ X
INTEGER ✓ ✓ ✓ X
BIGINT ✓ ✓ ✓ X
TINYINT UNSIGNED ✓ ✓ X X
SMALLINT UNSIGNED ✓ ✓ X X
INTEGER UNSIGNED ✓ ✓ X X
BIGINT UNSIGNED ✓ ✓ X X
FLOAT ✓ ✓ ✓ X
DOUBLE ✓ ✓ ✓ X
DECIMAL ✓ ✓ ✓ X
CHAR(SIZE) ✓ ✓ ✓ ✓
VARCHAR(SIZE) ✓ ✓ ✓ ✓
DATE ✓ ✓ ✓ ✓
TIME ✓ ✓ X X
TIMESTAMP ✓ ✓ X X
BINARY(SIZE)
VARBINARY(SIZE)
-- ✓ ✓ ✓
TINYTEXT
MEDIUMTEXT
TEXT
LONGTEXT
✓ ✓ -- ✓
TINYBLOB
MEDIUMBLOB
BLOB
LONGBLOB
✓ ✓ ✓ --
BIT ✓ ✓ ✓ ✓

# 显式转换

显式转换是通过类型转换函数来清楚直言地指定转换的方向。相比隐式转换,显式转换可以使SQL语句更加容易理解,输出类型的可预测性更强。

下表举例列示YashanDB在mysql模式下支持的MySQL类型转换函数:

函数 功能
BIN 其他类型向BIT类型转换(返回结果以VARCHAR类型承载该BIT值)。
CAST 向指定类型转换。
CONVERT 向指定类型或字符集转换。

Note:

  1. CHAR和VARCHAR类型的数据列为空字符串时,不允许与数值类型的数据列进行比较或转换。

  2. 当将字符串格式的浮点数通过隐式转换或显式转换为整数类型时,将按照四舍五入进行转换处理。

pdf-btn 下载文档 copy-btn 复制链接
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流