使用union和tempdb进行整理

Vit*_*lov 2 t-sql sql-server collation

我在tempdb中有临时表,在数据库中有一个表.当我用这个2表的联合构造查询时.有一个错误:

无法解决UNION操作中"Cyrillic_General_CI_AI"和"Cyrillic_General_CI_AS"之间的排序规则冲突.

drop table [sysdb].[##temp table];
create table [sysdb].[##temp table](a varchar);
insert into [sysdb].[##temp table] (a) values ('a'),('b');


select grade_name from [mybase].[DDS].[testtable]
union
select * from [sysdb].[##temp table];
Run Code Online (Sandbox Code Playgroud)

我已使用此查询在数据库中测试了我的排序规则参数:

SELECT DATABASEPROPERTYEX('mybase', 'Collation') as collation_dwh,DATABASEPROPERTYEX('tempdb', 'Collation') as collation_tempdb
Run Code Online (Sandbox Code Playgroud)

结果是数据库的整理是相同的:

collat​​ion_dwh | collat​​ion_tempdb

Cyrillic_General_CI_AI | Cyrillic_General_CI_AI

如何解决这个问题?

Gor*_*off 5

如果您明确设置了排序规则,union它应该没问题:

select grade_name collate Cyrillic_General_CI_AI from [mybase].[DDS].[testtable]
union
select a collate Cyrillic_General_CI_AI from [sysdb].[##temp table];
Run Code Online (Sandbox Code Playgroud)

请注意,列可以具有与数据库不同的排序规则.