如何在MySQL CHAR字段中存储空格字符?

时间:2015-09-22 17:33:28

标签: mysql char whitespace

我有一个带有CHAR(1)字段的MySQL表。我在其中存储单个字符。有时候我需要在这个领域存储一个空间,但是MySQL并没有让我这么做。我正在使用MySQL v.5.6.22。

这会运行,但会存储一个空字段:

INSERT INTO
companies(name_char_0)
values(' ');

返回一个空值:

SELECT HEX(name_char_0)
FROM companies;

我没有在VARCHAR(1)字段中遇到此问题,但我有一系列这些CHAR字段作为查找,速度是个问题。我相信VARCHAR(1)字段的搜索速度总是比CHAR(1)字段慢。

1 个答案:

答案 0 :(得分:4)

在CHAR字段中,空格用于将字段填充到其长度,然后剥离空格:

来自https://dev.mysql.com/doc/refman/5.0/en/char.html

  

CHAR列的长度固定为创建表时声明的长度。长度可以是0到255之间的任何值。当存储CHAR值时,它们用空格填充到指定的长度。 检索CHAR值时,将删除尾随空格。

如果您只想要一个空格,则不应使用CHAR类型。

如果你在MySQL中使用VARCHAR(1)> 5.0.2你不应该遇到这个问题:

  

从MySQL 5.0.3开始,在存储和检索值时,将保留尾随空格,符合标准SQL。在MySQL 5.0.3之前,当存储到VARCHAR列中时,会从值中删除尾随空格;这意味着检索到的值也不存在空格。