【问题标题】:Are there any limits on length of string in mysql?mysql中的字符串长度有限制吗?
【发布时间】:2010-06-11 11:02:20
【问题描述】:

我在 Rails 中使用 MySQL 数据库。我创建了一个string 类型的字段。它的长度有限制吗?输入 text 怎么样?
此外,由于text 是可变大小的,我相信使用文本对象会产生额外的成本。如果有的话,它们能有多重要?

【问题讨论】:

  • 如果有人对快速回答感兴趣,我想在STRING(在 MySQL 5.5 中)中输入的最长文本为 1056 个字符。

标签: sql mysql ruby-on-rails


【解决方案1】:

字符

一个固定长度的字符串,存储时总是用空格右填充到指定的长度。长度的范围是 1 到 255 个字符。检索值时将删除尾随空格。 CHAR 值根据默认字符集以不区分大小写的方式排序和比较,除非给出了 BINARY 关键字。

VARCHAR

可变长度字符串。注意:存储值时会删除尾随空格(这与 ANSI SQL 规范不同)
长度的范围是 1 到 255 个字符。 VARCHAR 值以不区分大小写的方式进行排序和比较,除非给出 BINARY 关键字

TINYBLOB、TINYTEXT

最大长度为 255 (28 - 1) 个字符的 TINYBLOBTINYTEXT

BLOB、文本

最大长度为 65,535 (216 - 1) 个字符的 BLOBTEXT 列,字节 = 64 KiB

MEDIUMBLOB,MEDIUMTEXT

最大长度为 16,777,215 (224 - 1) 个字符的 MEDIUMBLOBMEDIUMTEXT 列,字节 = 16 MiB

LONGBLOB、LONGTEXT

最大长度为 4,294,967,295 (232 - 1) 个字符的 LONGBLOBLONGTEXT 列,字节 = 4 GiB

请参阅MySQL Data Types Quick Reference Table 了解更多信息。

你也可以看到MYSQL - String Type Overview

【讨论】:

    【解决方案2】:

    一般来说,字符串应该用于短文本。比如MySQL下的VARCHAR(255)

    文本使用数据库中较大的文本,例如,在 MySQL 中,类型为 TEXT

    有关其工作原理以及 MySQL 内部结构和限制等的信息,请参阅 Pekka 的另一个答案。

    如果你要求,比如说,一个段落,我会使用文本。如果您请求用户名或电子邮件,请使用字符串。

    【讨论】:

    【解决方案3】:

    请参阅String Types 上的 mySQL 手册。

    Varchar(字符串):

    VARCHAR 列中的值是可变长度字符串。在 MySQL 5.0.3 之前,长度可以指定为 0 到 255 之间的值,在 5.0.3 及更高版本中可以指定为 0 到 65,535 之间的值。 MySQL 5.0.3 及更高版本中 VARCHAR 的有效最大长度取决于最大行大小(65,535 字节,在所有列之间共享)和使用的字符集。

    文字:见storage requirements

    如果您想要一个固定大小的文本字段,请使用CHAR,它的最大长度可以是 255 个字符。 VARCHARTEXT 都具有可变长度。

    【讨论】:

    • 这与使用“字符串”和“文本”的迁移无关
    • @~mathepic 在原始问题中没有提到 Rails - 只有 mySQL。不过感谢您的提醒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2011-01-09
    • 2011-04-19
    相关资源
    最近更新 更多