MySQL表宽度由char_length(),而不是length()

时间:2017-07-18 07:38:52

标签: mysql centos command-line-interface mariadb

MySQL命令行解释器根据字段的长度()打印列宽,而不是按照char_length()。因此,字段列不排列。

$ mysql -uroot -p
> select ('שלום עולמי');
+---------------------+
| שלום עולמי          |
+---------------------+
| שלום עולמי          |
+---------------------+
1 row in set (0.00 sec)

$ mysql --default-character-set=utf8 -uroot -p
> select ('שלום עולמי');
+---------------------+
| שלום עולמי          |
+---------------------+
| שלום עולמי          |
+---------------------+
1 row in set (0.00 sec)

$ mysql --default-character-set=utf8mb4 -uroot -p
> select ('שלום עולמי');
+---------------------+
| שלום עולמי          |
+---------------------+
| שלום עולמי          |
+---------------------+
1 row in set (0.00 sec)

我们可以看到字符串שלום עולמי长10个字符但长19个字节:9个希伯来语(UTF-8中的双字节)字符为18个字节,空间为另一个字节(单字节为UTF-8)。但是,行分隔符长度为23个字符:+端盖为2个,列左侧和右侧为-边距为2个,列本身为19个。

如何配置MySQL使用char_length()(10)作为显示列宽而不是length()?

这是在CentOS 7.3上使用MariaDB 10.1.24。我查看了this related question,但可以看出,接受的答案对我的情况没有帮助。

0 个答案:

没有答案