【问题标题】:Cannot resolve the collation conflict between this and that无法解决this和that之间的排序规则冲突
【发布时间】:2019-08-14 12:31:21
【问题描述】:

我有来自 2 个不同数据库的数据,我需要将它们合并并相互比较。

一个例子:

select distinct CustomerNo from DB1.dbo.TableCustomers
UNION ALL
select distinct CustNo from DB2.dbo.NewTableCustomers

我收到 无法解决 UNION 操作中“Danish_Norwegian_CI_AS”和“Danish_Greenlandic_100_CI_AS”之间的排序规则冲突错误。 任何想法如何解决这个问题?

【问题讨论】:

  • 在导致问题的列上使用明确的collate。然后,修复您的数据库和表,使它们都使用相同的排序规则!
  • 更改为 CustomerNo COLLATE Danish_Norwegian_CI_ASCustNo COLLATE Danish_Norwegian_CI_AS 或在这两个地方使用 Danish_Greenlandic_100_CI_AS。然后,按照 Gordon 的建议,修复您的数据库,使其保持一致。
  • 选择 distinct 与 union all 结合。有点奇怪的组合。
  • 大家好,感谢您的快速回复。问题是我正在将数据与我们不再使用的旧系统进行比较。由于一些发票问题,数据尚未转换到新系统。
  • 你能告诉我在上面的例子中是如何使用 collat​​e 的吗?是否需要更改表格?我无权更改表格

标签: sql sql-server collation


【解决方案1】:

试试这个:

select distinct CustomerNo collate Danish_Norwegian_CI_AS from DB1.dbo.TableCustomers
UNION ALL
select distinct CustNo from DB2.dbo.NewTableCustomers

【讨论】:

  • 你好,这很完美,有没有办法在两个表/数据库中使用一个不同的?
  • 我只是使用 union 而不是 Union all 并且 distinct 工作得很好,谢谢!
  • 有没有办法对两个语句使用单一计数?
  • 为此发布一个不同的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 2018-10-20
  • 2010-12-09
相关资源
最近更新 更多