mediumtext和string转换_数据类型 - 字符串类型 - 《TiDB v3.0 用户文档》 - 书栈网 · BookStack...

字符串类型

TiDB 支持 MySQL 所有的字符串类型,包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 以及 SET,完整信息参考这篇文档。

类型定义

CHAR 类型

定长字符串。CHAR 列的长度固定为创建表时声明的长度。长度可以为从 0 到 255 的任何值。当保存 CHAR 值时,在它们的右边填充空格以达到指定的长度。

{{< copyable “sql” >}}

[NATIONAL]CHAR[(M)][CHARACTER SET charset_name][COLLATE collation_name]

VARCHAR 类型

变长字符串。M 表示最大列长度,范围是 0 到 65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定。

{{< copyable “sql” >}}

[NATIONAL]VARCHAR(M)[CHARACTER SET charset_name][COLLATE collation_name]

TEXT 类型

文本串。M 表示最大列长度,范围是 0 到 65535。TEXT 的最大实际长度由最长的行的大小和使用的字符集确定。

{{< copyable “sql” >}}

TEXT[(M)][CHARACTER SET charset_name][COLLATE collation_name]

TINYTEXT 类型

类似于 TEXT,区别在于最大列长度为 255。

{{< copyable “sql” >}}

TINYTEXT[(M)][CHARACTER SET charset_name][COLLATE collation_name]

MEDIUMTEXT 类型

类似于 TEXT,区别在于最大列长度为 16,777,215。

{{< copyable “sql” >}}

MEDIUMTEXT[CHARACTER SET charset_name][COLLATE collation_name]

LONGTEXT 类型

类似于 TEXT,区别在于最大列长度为 4,294,967,295。

{{< copyable “sql” >}}

LONGTEXT[CHARACTER SET charset_name][COLLATE collation_name]

BINARY 类型

类似于 CHAR,区别在于 BINARY 存储的是二进制字符串。

{{< copyable “sql” >}}

BINARY(M)

VARBINARY 类型

类似于 VARCHAR,区别在于 VARBINARY 存储的是二进制字符串。

{{< copyable “sql” >}}

VARBINARY(M)

TINYBLOB 类型

类似于 BLOB,区别在于最大列长度为 255。

{{< copyable “sql” >}}

TINYBLOB

BLOB 类型

二进制大文件。M 表示最大列长度,范围是 0 到 65535。

{{< copyable “sql” >}}

BLOB[(M)]

MEDIUMBLOB 类型

类似于 BLOB,区别在于最大列长度为 16,777,215。

{{< copyable “sql” >}}

MEDIUMBLOB

LONGBLOB 类型

类似于 BLOB,区别在于最大列长度为 4,294,967,295。

{{< copyable “sql” >}}

LONGBLOB

ENUM 类型

枚举类型是一个字符串,它只能有一个值的字符串对象。其值必须是从一个固定集合中选取,这个固定集合在创建表的时候定义,语法是:

{{< copyable “sql” >}}

ENUM('value1','value2',...)[CHARACTER SET charset_name][COLLATE collation_name]

例如:

{{< copyable “sql” >}}

ENUM('apple','orange','pear')

枚举类型的值在 TiDB 内部使用数值来存储,每个值会按照定义的顺序转换为一个数字,比如上面的例子中,每个字符串值都会映射为一个数字:

数字

NULL

NULL

‘’

0

‘apple’

1

‘orange’

2

‘pear’

3

SET 类型

集合类型是一个包含零个或多个值的字符串,其中每个值必须是从一个固定集合中选取,这个固定集合在创建表的时候定义,语法是:

{{< copyable “sql” >}}

SET('value1','value2',...)[CHARACTER SET charset_name][COLLATE collation_name]

例如:

{{< copyable “sql” >}}

SET('1','2')NOT NULL

上面的例子中,这列的有效值可以是:

''

'1'

'2'

'1,2'

集合类型的值在 TiDB 内部会转换为一个 Int64 数值,每个元素是否存在用一个二进制位的 0/1 值来表示,比如这个例子 SET('a','b','c','d'),每一个元素都被映射为一个数字,且每个数字的二进制表示只会有一位是 1:

成员

十进制表示

二进制表示

‘a’

1

0001

‘b’

2

0010

‘c’

4

0100

‘d’

8

1000

这样对于值为 ('a', 'c') 的元素,其二进制表示即为 0101。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值