0

我正在执行以下语句:

select left(column,400) from table into outfile test;

我也尝试过使用子字符串函数(结果相同)。

当我去下载文件并获得字符数时:

wc -c < test

我得到 409 个字符作为回报。

有人帮我解释为什么我的计数不正确吗?

数据库表设置为utf8,列为longtext。

当我运行以下命令时,它仍然没有给我正确的字符长度:

select length(left(column, 400) from table where id in (1,2,3,4);
+-----------------------------+
| length(left(column,400))    |
+-----------------------------+
|                         402 |
|                         403 |
|                         412 |
|                         401 |
+-----------------------------+
4

1 回答 1

1

该命令wc -c正在计算bytes,尽管用于开关的字符。使用 UTF-8 格式的数据库,mysqlleft正在计算字符数。由于 UTF-8 每个字符可以使用超过 1 个字节,我预计其中的前 400 个字符column包括 8 个占用 2 个字节的字符(或者如果一些占用 3 个字节,则少于 8 个)。最后可能还有一个换行符。

于 2016-07-19T22:56:53.313 回答