# 11.3.4 BLOB 和 TEXT 类型

一种斑点是一个二进制大对象,可以容纳可变数量的数据。四个斑点类型是小斑点,斑点,中块, 和长块.这些仅在它们可以保存的值的最大长度上有所不同。四个文本类型是小文本,文本,中文本, 和长文.这四个对应斑点类型并具有相同的最大长度和存储要求。看第 11.7 节,“数据类型存储要求”.

斑点值被视为二进制字符串(字节字符串)。他们有二进制字符集和排序,比较和排序基于列值中字节的数值。文本值被视为非二进制字符串(字符串)。他们有一个字符集二进制, 并根据字符集的排序规则对值进行排序和比较。

如果未启用严格 SQL 模式并且您将值分配给斑点要么文本超过列的最大长度的列,该值将被截断以适应并生成警告。对于非空格字符的截断,您可能会导致发生错误(而不是警告)并使用严格的 SQL 模式禁止插入值。看第 5.1.11 节,“服务器 SQL 模式”.

从要插入的值中截断多余的尾随空格文本无论 SQL 模式如何,列都会生成警告。

为了文本斑点列,插入时没有填充,选择时没有字节被剥离。

如果一个文本列被索引,索引条目比较在最后用空格填充。这意味着,如果索引需要唯一值,则仅在尾随空格数不同的值会出现重复键错误。例如,如果一个表包含'一种', 尝试存储'一种 '导致重复键错误。这不是真的斑点列。

在大多数方面,您可以将斑点列作为变量可以任意大的列。同样,你可以认为一个文本列作为VARCHAR柱子。斑点文本与......不同变量VARCHAR通过以下方式:

  • 对于索引斑点文本列,您必须指定索引前缀长度。为了字符VARCHAR,前缀长度是可选的。看第 8.3.5 节,“列索引”.

  • 斑点文本列不能有默认价值观。

    如果您使用二进制带有 a 的属性文本数据类型,为该列分配二进制 (_bin) 列字符集的排序规则。

长 VARCHAR映射到中文本数据类型。这是一个兼容性功能。

MySQL 连接器/ODBC 定义斑点价值观朗瓦尔二进制文本价值观朗瓦查尔.

因为斑点文本值可能非常长,在使用时可能会遇到一些限制:

笔记

mysql客户端,二进制字符串使用十六进制表示法显示,具体取决于--binary-as-hex.有关该选项的更多信息,请参阅第 4.5.1 节,“mysql - MySQL 命令行客户端”.