MySQL的“二进制”与“字符的字符集的二进制”(MySQL “binary” vs “char c

2019-08-17 11:03发布

什么之间的区别binary(10) VS char(10)character set binary

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

难道他们的代名词所有 MySQL引擎?

是否有任何疑难杂症需要提防?

Answer 1:

没有差异。

然而,有一个警告,如果你存储的字符串。

如果你只想要一个字节数组或其他存储二进制数据,如流或文件,然后使用二进制类型,这是他们都是为了。

从报价MySQL手册 :

在一个CHAR,VARCHAR,或文本列的定义中使用CHARACTER SET二进制导致要视为二进制数据类型的列。 例如,定义以下对是等效的:

 CHAR(10) CHARACTER SET binary BINARY(10) VARCHAR(10) CHARACTER SET binary VARBINARY(10) TEXT CHARACTER SET binary BLOB 

因此,技术上没有任何区别。

然而,存储的字符串时,它必须从字符串转换成字节使用的字符集的值。 这一决定是MySQL服务器之前,要么自己做,或者你离开它的MySQL为你做的事情。 MySQL将铸造一个字符串使用BIN字符集为二进制与执行。

如果你想存储在另一种格式编码,可以说你有一个业务需求,说你必须使用4个字节的每个字符(MySQL的默认情况下不这样做),那么你可以使用“设置二进制字符”为文本列和执行字符集编码自己。

这也是值得一读的BINARY和VARBINARY类型从MySQL手册,因为这细节的重要信息,如填充。

总结:没有技术差异为一体的代名词其他。 在我看来,这使得存储的数据类型二进制字符串,将使用“CHARACTER SET BINARY”通常持有一个字符串存储不能被转换数据虽然字符集表示的二进制字段的字节数组/流等逻辑意义。



文章来源: MySQL “binary” vs “char character set binary”