在我的数据库中,我有一个通过链接服务器选项从Excel工作表创建的表。
我现在正在尝试将其内容与我的主要表格进行比较。
我正在比较的表位于同一个数据库中。
两个表中都有一个日期列,两个类型都是日期时间,并且具有SQL_Latin1_General_CP1_CI_AS的排序规则,与数据库相同。
服务器排序规则是Latin1_General_CI_AS
但是当我尝试运行查询比较表之间的日期时,我收到错误:
Cannot resolve the collation conflict between
"Latin1_General_CI_AS" and
"SQL_Latin1_General_CP1_CI_AS" in the
equal to operation.
我尝试使用和不使用COLLATE选项,同时使用两种排序规则设置。
我的查询是:
select * , hxl.holiday_dt,
datediff(d, h.holiday_dt collate SQL_Latin1_General_CP1_CI_AS,
hxl.holiday_dt collate SQL_Latin1_General_CP1_CI_AS)
from holiday h, Holiday_XL hxl
where h.currency_cd=hxl.currency_cd
事实上,涉及两个表的任何查询都会产生完全相同的归类错误,例如:
select count(*)
from Holiday_XL c
where c.currency_cd in (select distinct h.currency_cd from holiday h)
提前感谢任何想法。
此致 克里斯
答案 0 :(得分:5)
在货币比较 h.currency_cd = hxl.currency_cd 上报告错误,而不是在datediff上报告错误,因此请尝试强制对货币进行整理。
排序仅与字符(char,varchar,nvarchar)和文本类型相关。
答案 1 :(得分:0)
在排序规则下并提供整理表级别,在网络搜索中有很多提示和代码可用于排序主题。
如果你有问题的话。将excel的内容插入@table或permenant表,并在选择进行比较时为该表提供Collation