gpt4 book ai didi

MySQL "binary"与 "char character set binary"

转载 作者:IT王子 更新时间:2023-10-28 23:43:50 28 4
gpt4 key购买 nike

binary(10) vs char(10)character set binary有什么区别?

还有varbinary(10) vs varchar(10)字符集二进制

它们在所有 MySQL 引擎中是同义词吗?

有什么需要注意的地方吗?

最佳答案

没有区别。

但是,如果您存储的是字符串,则需要注意。

如果您只想存储字节数组或其他二进制数据(例如流或文件),那么请使用二进制类型,因为这正是它们的用途。

引自MySQL manual :

The use of CHARACTER SET binary in the definition of a CHAR, VARCHAR,or TEXT column causes the column to be treated as a binary data type.For example, the following pairs of definitions are equivalent:

CHAR(10) CHARACTER SET binary
BINARY(10)

VARCHAR(10) CHARACTER SET binary
VARBINARY(10)

TEXT CHARACTER SET binary
BLOB

因此,从技术上讲没有区别。

但是,在存储字符串时,必须使用字符集将其从字符串转换为字节值。决定是在 MySQL 服务器之前自己做这件事,还是让 MySQL 为你做。 MySQL 将通过使用 BIN 字符集将字符串转换为 BINARY 来执行。

如果你想以另一种格式存储编码,假设你有一个业务需求,要求每个字符必须使用 4 个字节(MySQL 默认不这样做),你可以使用 CHARACTER SET BINARY 到文本列并自己执行字符集编码。

同样值得一读The BINARY and VARBINARY Types来自 MySQL 手册,因为它详细说明了诸如填充之类的重要信息。

总结:没有技术差异,因为一个是另一个的同义词。在我看来,将二进制字符串存储在通常使用 CHARACTER SET BINARY 保存字符串的数据类型中并将字节数组/流等存储在 BINARY 字段中是合乎逻辑的不能通过字符集转换数据来表示。

关于MySQL "binary"与 "char character set binary",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15334607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com