0

我们正在尝试创建一个存储过程,但是我们遇到了以下错误消息:

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

此错误发生在第 33 行,内容如下:

SET @MINTIME = (SELECT CONVERT(varchar,DATEADD(MONTH,-1,GETDATE()),112));

有谁知道如何解决这个问题?

4

1 回答 1

3

通常,这有效

SET @MINTIME =
(SELECT CONVERT(varchar,DATEADD(MONTH,-1,GETDATE()),112)) COLLATE DATABASE_DEFAULT;

或者

仅适用于列定义,例如在表变量中:DECLARE @MINTIME varchar(??) COLLATE DATABASE_DEFAULT

发生这种情况是因为您在某处存在不匹配,例如 @mintime 排序规则(作为 DECLARE 时间)与数据库排序规则(用于转换为 varchar)不匹配

编辑:你确定是这条线吗?该错误通常发生在字符串比较中。在一个简单的赋值中,右手表达式的排序规则将被强制转换为左手排序规则。

随机想法:第 33 行,这是第 1 行通常是“CREATE PROC”的地方,并排除右键单击时添加的 SET ANSI 内容等,在 SSMS 中编辑

于 2009-09-22T14:14:03.640 回答