当表头未知时,在查询UNION时使用COLLATE DATABASE_DEFAULT?

时间:2018-10-26 10:08:01

标签: sql sql-server collation

我当前正在使用以下格式的代码

SELECT * FROM ##Temp1
UNION
SELECT * FROM ##Temp2

(由于临时表是从2个不同数据库中的表填充的,每个数据库使用不同的排序规则)会导致错误消息

Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the UNION operation.

直到现在,当遇到诸如此类的错误时,我一直在使用COLLATE DATABASE_DEFAULT方法,这是可能的,因为表中包含的标题是恒定的。

但是,我现在面临2个表之间的排序规则冲突,其中表标题不是恒定的。我该如何解决这个问题?

我想到的一种可能的解决方案是遍历##Temp1表中tempdb.dbo的表头,并动态生成一个字符串,该字符串指定临时表中使用的列标题。但是,这似乎不必要地笨拙。

0 个答案:

没有答案