MySQL截断命令-unicode字符
我目前正在尝试调整 MySQL 中表中存储的值。存储的值包含一系列 Unicode 字符。我需要截断到 40 个字节的存储空间,但是当我尝试时:
UPDATE `MYTABLE` SET `MYCOLUMN` = LEFT(`MYCOLUMN`, 40);
MySQL 太有用了,保留了 40 个字符,而不是 40 个字节。有办法解决这个问题吗?
问候并表示感谢,
gaioshin
I am currently trying to adjust the values stored in a table in MySQL. The values stored contain a series of Unicode characters. I need to truncate to 40 bytes worth of storage, but when I try:
UPDATE `MYTABLE` SET `MYCOLUMN` = LEFT(`MYCOLUMN`, 40);
MySQL is overly helpful and retains 40 characters, rather than 40 bytes. Is there a way to get around this?
Regards and with thanks,
gaioshin
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不太确定您是否真的想截断为正好 40 个字节。
因为你可能会弄乱 unicode 字符,所以条件应该是
“最多 40 个字节,最后一个字符仍然有效”。
我会为此编写一个存储函数。我不确定它是否有效,但我想,你明白我的意思了:
I'm not quite sure if you really want to truncate to exactly 40 bytes.
Since you can get messed up unicode characters the condition should be
"MAX 40 bytes WITH the last character still being valid".
I'd write a stored function for that. I'm not sure it works, but I guess, you catch my drift:
LEFT 是字节安全的。
如何修改列数据类型,使其只能容纳 40 个字节。 MySQL 会自动为您进行截断。
LEFT is byte safe.
How about modifying the column datatype so that it can only hold 40 bytes. MySQL will automatically do the truncating for you.