我正在执行以下声明:
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 |
+-----------------------------+
答案 0 :(得分:1)
命令wc -c
正在计算字节,尽管用于切换的字符。使用UTF-8中的数据库时,mysql left
正在计算字符。由于UTF-8每个字符可以使用超过1个字节,我希望column
中的前400个字符包含8个字符,占用2个字节(如果有些占用3个字节,则小于8个字节)。最后也可能是换行符。