执行2个表用not in 关联,但是提示这个错误
消息 468,级别 16,状态 9,第 74 行
无法解决 equal to 运算中 "Latin1_General_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。
对比2个表字段字符集都是"Latin1_General_CI_AS",但是tempdb库的字符集是"Chinese_PRC_CI_AS",没办法,只能重新把数据库协助重新安装了
后续来了,重新安装了后还是不行、后来通过语句查询
select * from sys.all_columns a
where a.object_id=object_id('[dbo].[t_1]')
发现这个列的字符排序具然是 Chinese_PRC_CI_AS,就修改了列的字符排序就可以了
通过语句,
alter table t_1
alter column col1 nvarchar(200) COLLATE Latin1_General_CI_AS ;
参考:
COLLATE <collation_name>
指定更改后的列的新排序规则。 如果未指定,则为该列分配数据库的默认排序规则。 排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。 有关列表和详细信息,请参阅 Windows 排序规则名称和 SQL Server 排序规则名称。
COLLATE 子句仅更改数据类型为 char、varchar、nchar 和 nvarchar 的列的排序规则。 若要更改用户定义别名数据类型列的排序规则,请单独使用 ALTER TABLE 语句将列更改为 SQL Server 系统数据类型。 然后,更改它的排序规则,并将列更改回别名数据类型。
如果存在以下一个或多个条件,ALTER COLUMN 无法更改排序规则:
- CHECK 约束、FOREIGN KEY 约束或计算列引用了更改后的列。
- 已为列创建了索引、统计信息或全文检索。 如果更改了列的排序规则,则将删除为更改后的列自动创建的统计信息。
- 架构绑定视图或函数引用了列。
有关支持的排序规则的详细信息,请参阅 COLLATE。
更改列排序规则
ALTER TABLE (Transact-SQL) - SQL Server | Microsoft Learn