mysql substring / left命令不返回正确的字符数

时间:2016-07-19 22:28:04

标签: mysql bash utf-8 wc longtext

我正在执行以下声明:

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 |
+-----------------------------+

1 个答案:

答案 0 :(得分:1)

命令wc -c正在计算字节,尽管用于切换的字符。使用UTF-8中的数据库时,mysql left正在计算字符。由于UTF-8每个字符可以使用超过1个字节,我希望column中的前400个字符包含8个字符,占用2个字节(如果有些占用3个字节,则小于8个字节)。最后也可能是换行符。