问题描述
云数据库 RDS SQL Server 版执行查询操作时系统报错,显示类似如下。
问题原因
由于表数据列的字符集不同,导致查询失败。
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
可以修改表的字符集保持一致,或者查询时指定字符集。
修改表的字符集
云数据库 RDS SQL Server 版不支持修改数据库级别字符集,只支持修改基于数据库表级列的字符集。修改SQL语句如下。
注:该版本支持的字符集如下,其中后缀‘_CI’指不区分大小写,‘_CS’指区分大小写,‘_BIN’指按二进制排序并区分大小写。
- Chinese_PRC_CI_AS
- Chinese_PRC_CS_AS
- SQL_Latin1_General_CP1_CI_AS
- SQL_Latin1_General_CP1_CS_AS
- Chinese_PRC_BIN
alter table [$Table_Name] alter column [$Column] [$Column_Number] collate [$AS];
注:
- [$Table_Name]指表名。
- [$Column]指列名。
- [$Column_Number]指列的数据类型。
- [$AS]指需要设定的字符集。
指定字符集查询
执行如下SQL语句,直接指定字符集进行查询。
select * from [$Table_Name1] a ,[$Table_Name2] b where a.[$Column]=b.[$Column] collate [$AS];
适用于
- 云数据库 RDS SQL Server 版
如果您的问题仍未解决,您可以在阿里云社区提交工单联系阿里云技术支持。