我有一个带有except子句的查询。在except之下,我的第二个查询来自与第一个查询正在使用的数据库不同的数据库。
它看起来像这样
SELECT field1 as a
FROM table 1
EXCEPT
USE differentdb
SELECT field2 as a
FROM table 2
我也试过这个
SELECT field1 as a
FROM table 1
EXCEPT
USE differentdb
SELECT field2 as a
FROM differentdb.dbo.table2
我意识到SQL中不允许这样做,因为我收到以下错误:
消息468,级别16,状态9,行1无法解析排序规则 " SQL_Latin1_General_CP1_CI_AS"之间的冲突和 " Latin1_General_CI_AS"在等于操作。
我想知道是否有另一种方法可以编写此查询并完成跨db EXCEPT子句。
答案 0 :(得分:3)
快速更改列的排序规则,如:
SELECT field1 COLLATE SQL_Latin1_General_CP1_CI_AS as a
FROM table 1
EXCEPT
SELECT differentdb.SchemaName.field2 as a
FROM table 2
答案 1 :(得分:1)
我们可以使用collate子句转换其他数据库中的排序规则。
SELECT field2 collate SQL_Latin1_General_CP1_CI_AS as a
FROM table 2
在这里你应该使用正确的整理 - 因为它不是第一和第二个数据库整理的信息。
或者你可以简单地使用
SELECT field2 collate database_default as a
FROM table 2
这将导致collate
子句继承当前数据库的排序规则