SQL更新含重音字符后显示异常,如何在UPDATE中处理?
解决UPDATE语句中重音字符显示异常的问题
你遇到的问题核心是字符集不匹配导致的——如果nameConsultant字段的字符集不支持Unicode或重音字符,直接插入带重音的字符串会出现乱码,仅在SELECT阶段加COLLATE无法解决,因为乱码已经在存储环节产生了。
给你几个直接可行的处理方案:
1. 给字符串加Unicode前缀(适用于SQL Server)
在字符串前加上N前缀,强制将其识别为Unicode类型,确保重音字符被正确存储:
update consultant set nameConsultant = N'Laís Costa - Instituto' where ID = 77
2. 修正字段的字符集与排序规则
如果字段本身的类型不支持重音字符,建议直接修改字段属性,从根源解决问题:
- SQL Server:将字段改为
nvarchar类型,搭配支持重音的排序规则,比如Latin1_General_CI_AS - MySQL:将字段字符集改为
utf8mb4,排序规则用utf8mb4_unicode_ci
以SQL Server为例,修改字段的语句:
ALTER TABLE consultant ALTER COLUMN nameConsultant NVARCHAR(255) COLLATE Latin1_General_CI_AS;
3. 显式转换字符集(适用于MySQL)
如果暂时不想修改字段属性,可以在UPDATE时用CONVERT函数将字符串转为对应字符集:
update consultant set nameConsultant = CONVERT('Laís Costa - Instituto' USING utf8mb4) where ID = 77;
内容的提问来源于stack exchange,提问作者Matheus Pires
相关产品推荐
相关产品推荐

