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二进制导致该列被视为二进制数据类型.例如,以下两对定义是等效的:
Run Code Online (Sandbox Code Playgroud)CHAR(10) CHARACTER SET binary BINARY(10) VARCHAR(10) CHARACTER SET binary VARBINARY(10) TEXT CHARACTER SET binary BLOB
所以,技术上没有区别.
但是,在存储字符串时,必须使用字符集将字符串转换为字节值.决定是在MySQL服务器之前自己做这件事,还是让你做到为你做的事情.MySQL将通过使用BIN字符集将字符串转换为BINARY来执行.
如果您想以其他格式存储编码,假设您有一个业务要求,即每个字符必须使用4个字节(默认情况下MySQL不会这样做)您可以将"CHARACTER SET BINARY"用于文本列并自己执行字符集编码.
同样值得阅读MySQL手册中的BINARY和VARBINARY类型,因为它详细说明了填充等重要信息.
简介: 没有技术差异,因为一个是另一个的同义词.在我看来,将二进制字符串存储在通常使用"CHARACTER SET BINARY"保存字符串的数据类型中,并在BINARY字段中存储字节数组/流等,通过字符集转换数据无法表示.