SQL Server修改列支持多语言,解决插入韩文显示问号问题
解决SQL Server中nvarchar列插入非英文字符显示问号的问题
你遇到的问题核心是插入Unicode字符时没加N前缀,导致SQL Server把字符串按默认代码页转码,非ASCII字符变成问号。虽然你已经把列改成了nvarchar(max)(这个类型本身支持Unicode),但插入语句的写法不对,才会出现乱码。
解决步骤如下:
1. 修正插入语句
插入Unicode字符串时,必须在字符串前加N前缀,告诉SQL Server这是Unicode格式的内容,匹配nvarchar列的类型:
insert into landing.lnd_test (party_name) values (N'성 이름')
2. 修复已插入的错误数据
如果已经有显示为'? ??'的错误数据,用带N前缀的更新语句修正:
update landing.lnd_test set party_name = N'성 이름' where party_name = '? ??' -- 可根据其他条件精准定位错误行
3. 检查列的排序规则(可选)
如果后续仍有问题,确认列的排序规则是否支持韩文:
- 查看当前列的排序规则:
SELECT c.collation_name FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE t.name = 'lnd_test' AND c.name = 'party_name'
- 如果需要修改为适配韩文的排序规则,执行:
ALTER TABLE landing.lnd_test ALTER COLUMN party_name NVARCHAR(MAX) COLLATE Korean_Wansung_CI_AS -- 末尾加 NOT NULL 或 NULL,根据列原本的空值属性调整
内容的提问来源于stack exchange,提问作者Neha Nayal
相关产品推荐
相关产品推荐

