等于操作无法解决“ SQL_Latin1_General_CP1_CI_AS”和“ Latin1_General_CI_AI”之间的排序规则冲突


69

由于我已从台式机移至笔记本电脑,因此我无法获得上述排序规则错误。我的数据库有数百个存储过程,因此对我而言,诸如覆盖某些查询或修复列排序规则之类的任何解决方案都是无法实现的。

“无法解决等于操作中“ SQL_Latin1_General_CP1_CI_AS”和“ Latin1_General_CI_AI”之间的排序规则冲突”

我的问题不是唯一的,我已经搜索了很多,但是可用的解决方案建议我用一些不可行的代码覆盖查询。请提出一些避免这种整理的解决方案。

我已经尝试过更改我的数据库排序规则。

ALTER DATABASE testDB  
COLLATE French_CI_AI ;  
GO  

谢谢。

Answers:


129

连接具有不同排序规则的表时,只需使用以下语法即可进行即时排序。我集成了系统,因此我必须做很多事情。

select * from [Product] p join [category] c 
on  
c.[Name] collate SQL_Latin1_General_CP1_CI_AS 
= 
p.[Name] collate SQL_Latin1_General_CP1_CI_AS

对于任何人都可以做到这一点的飞行
主样式

1
感谢Master Styles的答复,但这无济于事,因为我的问题分散在大约100多个表中的600多个存储过程中。
TechnicalSmile

@MasterStyles我想更改整个数据库排序规则。这是可能的?
编码器将于

@coderwill可能,但是非常危险。例如,从不区分大小写切换为区分大小写,反之亦然,将影响所有接触文本数据的查询中的每个=和<>操作。
约翰·扎布罗斯基

6
USE master;
GO
ALTER DATABASE PRATAP
COLLATE Latin1_General_CI_AS_KS_WS ;
GO

--Verify the collation setting.
SELECT name, collation_name
FROM sys.databases
WHERE name = N' PRATAP ';
GO

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.