sql - 无法解决联合选择中的排序规则冲突

标签 sql sql-server-2005

我有两个疑问:

首先不起作用:

select hotels.TargetCode as TargetCode from hotels
union all 
select DuplicatedObjects.duplicatetargetCode as TargetCode 
from DuplicatedObjects where DuplicatedObjects.objectType=4

因为我得到错误:
Cannot resolve collation conflict for column 1 in SELECT statement.

第二部作品:
select hotels.Code from hotels where hotels.targetcode is not null 
union all 
select DuplicatedObjects.duplicatetargetCode as Code 
from DuplicatedObjects where DuplicatedObjects.objectType=4 

结构:
Hotels.Code -PK nvarchar(40)
Hotels.TargetCode - nvarchar(100)

DuplicatedObjects.duplicatetargetCode PK nvarchar(100)

最佳答案

使用 sp_help在两张 table 上。 hotels.TargetCode 上的排序规则与 DuplicatedObjects.duplicateTargetCode 上的排序规则不同,所以数据库不知道如何处理结果 UNION .

您可以对其中一个强制执行新的排序规则以匹配另一个,或者将结果放入预定义的临时表/表中,该表/表已经定义了排序规则。

编辑:您可以使用以下内容覆盖现有的排序规则...

DuplicatedObjects.duplicateTargetCode COLLATE SQL_Latin1_General_CP1_CI_AS

...在查询中。这将使用带有排序规则的重复目标代码 SQL_Latin1_General_CP1_CI_AS .您应该选择与 hotels.TargetCode 匹配的排序规则.

关于sql - 无法解决联合选择中的排序规则冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673673/

相关文章:

sql-server-2005 - SSRS 报告 - 导出为 CSV

sql - 以编程方式添加 SSIS ForEachLoop

c# - Entity Framework 将自动日期时间列设置为 : 01/01/0001 00:00:00

mysql - 使用 on 和 and case 进行多重连接返回错误结果

sql - 为什么即使对于已过滤的行,我的子查询也会执行?

java - Spring-Data-Jpa - 清空带有外键的表

mysql - 优化 innoDB 中的 MySQL LIKE '%string%' 查询

SQL 连接表作为 JSON 数据

sql-server-2005 - SQL Server : Setting database mode to RESTRICTED_USER WITH ROLLBACK IMMEDIATE doesn't always drop all connections

sql-server-2005 - 索引键列 VS 索引包含列