我有这个声明在第一次运行中起作用
UPDATE accounts SET username = CONVERT(CAST(CONVERT(username USING latin1) AS BINARY) USING utf8)
这会将latin1字符转换为mysql中的UTF8中文字符。
运行第二次,角色会变得怪异。
我如何添加 where condition ,如果该字词当前位于latin1,则只会从latin1更新用户名为utf8
答案 0 :(得分:0)
列的CHARACTER SET
是多少?如果它仍然是latin1
,那么你会遇到很多麻烦。
声明为latin1且包含latin1字节的表可以通过
转换为utf8ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;
之后(并假设您已正确设置SET NAMES
),文本将在插入时转换为utf8。不需要旗帜;不需要第二次通过;等