use*_*618 10 sql sql-server-2005
我有两个问题:
首先不起作用:
select hotels.TargetCode as TargetCode from hotels
union all
select DuplicatedObjects.duplicatetargetCode as TargetCode
from DuplicatedObjects where DuplicatedObjects.objectType=4
Run Code Online (Sandbox Code Playgroud)
因为我收到错误:
Cannot resolve collation conflict for column 1 in SELECT statement.
Run Code Online (Sandbox Code Playgroud)
第二部作品:
select hotels.Code from hotels where hotels.targetcode is not null
union all
select DuplicatedObjects.duplicatetargetCode as Code
from DuplicatedObjects where DuplicatedObjects.objectType=4
Run Code Online (Sandbox Code Playgroud)
结构体:
Hotels.Code -PK nvarchar(40)
Hotels.TargetCode - nvarchar(100)
DuplicatedObjects.duplicatetargetCode PK nvarchar(100)
Run Code Online (Sandbox Code Playgroud)
小智 16
您还需要collation
在select部分中添加语句 - 不仅在where子句中 - 如下所示:
select a.field1 collate DATABASE_DEFAULT, b.otherfield from table1 a, table2 b
where a.field1 collate DATABASE_DEFAULT = b.field3
Run Code Online (Sandbox Code Playgroud)
sp_help
在两个表上使用.hotels.TargetCode上的排序规则与排序规则不同DuplicatedObjects.duplicateTargetCode
,因此DB不知道如何处理结果UNION
.
您可以在其中一个上强制执行新的排序规则以匹配另一个,或将结果放入预定义的临时表/表中,该表将已定义排序规则.
编辑:您可以使用类似的东西覆盖现有的排序规则
DuplicatedObjects.duplicateTargetCode COLLATE SQL_Latin1_General_CP1_CI_AS
Run Code Online (Sandbox Code Playgroud)
...在查询中.这将使用duplicateTargetCode和排序规则SQL_Latin1_General_CP1_CI_AS
.您应该选择与其匹配的排序规则hotels.TargetCode
.
归档时间: |
|
查看次数: |
33010 次 |
最近记录: |