MySQL"二进制"vs"char字符集二进制"

Pac*_*ier 11 mysql debugging storage specifications column-types

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

varbinary(10)vs varchar(10)character set binary

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

有什么需要注意的吗?

Ste*_*eve 10

没有区别.

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

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

MySQL手册引用:

在CHAR,VARCHAR或TEXT列的定义中使用CHARACTER SET二进制导致该列被视为二进制数据类型.例如,以下两对定义是等效的:

CHAR(10) CHARACTER SET binary
BINARY(10)

VARCHAR(10) CHARACTER SET binary
VARBINARY(10)

TEXT CHARACTER SET binary
BLOB
Run Code Online (Sandbox Code Playgroud)

所以,技术上没有区别.

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

如果您想以其他格式存储编码,假设您有一个业务要求,即每个字符必须使用4个字节(默认情况下MySQL不会这样做)您可以将"CHARACTER SET BINARY"用于文​​本列并自己执行字符集编码.

同样值得阅读MySQL手册中的BINARY和VARBINARY类型,因为它详细说明了填充等重要信息.

简介: 没有技术差异,因为一个是另一个的同义词.在我看来,将二进制字符串存储在通常使用"CHARACTER SET BINARY"保存字符串的数据类型中,并在BINARY字段中存储字节数组/流等,通过字符集转换数据无法表示.